Skip to content

A simple C++ implementation and visualization of Kolmogorov-Arnold Networks.

License

Notifications You must be signed in to change notification settings

huytrinhm/ikant

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ikant: Interactive Kolmogorov-Arnold Networks Toolkit

A simple C++ implementation and visualization of Kolmogorov-Arnold Networks.

Screenshot

Features

  • Implementation of Kolmogorov-Arnold Networks (KAN)
  • Visualization of network structures and training processes
  • GUI for editing network parameters and training settings
  • Integration with LAPACK for numerical computations
  • Integration with Raylib for graphical rendering

Getting Started

Prerequisites

  • C++ compiler
  • Make
  • LAPACK library
  • Raylib library

Building the Project

  1. Clone the repository:

    git clone https://github.com/huytrinhm/ikant.git
    cd ikant
  2. Build the project using Make:

    make

    You may need to modify the Makefile to specify the paths to the LAPACK and Raylib libraries. The files inside this repository lib directory is provided as a reference.

  3. Download example checkpoint and data files from the releases and place them into the project directory.

Running the Application

After building the project, you can run the application using:

./main.exe

The checkpoint and data format

You may find the development.ipynb notebook helpful in understanding the format of the checkpoint and data files and how to generate them.

Acknowledgements

  • pykan: The original Python implementation of Kolmogorov-Arnold Networks. The project at the linked commit was used as a reference for this C++ implementation.
  • efficient-kan: An efficient implementation of Kolmogorov-Arnold Networks in Python. The project was used as a reference for the implementation of our C++ version.
  • An Introduction to Spline Theory (Michael S. Floater): This document was used as a reference for the understanding of spline theory and the implementation of B-spline in this project.
  • Raylib for graphical rendering.
  • LAPACK for numerical computations.
  • TinyFileDialogs for file dialogs.

Contributing

Since this project is developed as a part of my personal research, I am not actively looking for contributions. However, feel free to fork the repository and make your own modifications.

About

A simple C++ implementation and visualization of Kolmogorov-Arnold Networks.

Resources

License

Stars

Watchers

Forks