A simple C++ implementation and visualization of Kolmogorov-Arnold Networks.
- 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
- C++ compiler
- Make
- LAPACK library
- Raylib library
-
Clone the repository:
git clone https://github.com/huytrinhm/ikant.git cd ikant
-
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 repositorylib
directory is provided as a reference. -
Download example checkpoint and data files from the releases and place them into the project directory.
After building the project, you can run the application using:
./main.exe
You may find the development.ipynb
notebook helpful in understanding the format of the checkpoint and data files and how to generate them.
- 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.
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.