/Efficient-KAN-in-Chinese

给中文KAN学习者和开发者准备的各种KAN的详细的中文注释+使用例子

Primary LanguageJupyter NotebookMIT LicenseMIT

Efficient-KAN-in-Chinese

本仓库收集并整理了多种基于 Kolmogorov-Arnold 网络(KAN)的高效实现,包括 FourierKAN、ChebyKAN、JacobiKAN、TaylorKAN 和 WaveletKAN 等。这些实现旨在提供对不同类型 KAN 模型的深入理解和便捷使用。为了方便观看、阅读和修改,本人基于 Efficient-KAN 仓库的写法对变种 KAN 进行重构。


安装

从 PyPI 安装

可以直接通过 PyPI 使用 pip 进行安装:

pip install ikan

从 GitHub 安装(开发版本)

若需要安装最新的开发版本,可以从 GitHub 仓库直接安装:

pip install git+https://github.com/lgy112112/Efficient-KAN-in-Chinese.git

从源码安装

你也可以从源码安装:

  1. 克隆项目仓库:
    git clone https://github.com/lgy112112/Efficient-KAN-in-Chinese.git
  2. 进入项目目录:
    cd Efficient-KAN-in-Chinese
  3. 使用可编辑模式安装:
    pip install -e .

依赖

本项目依赖以下 Python 库:

  • torch>=1.9.0
  • torchinfo
  • numpy

通过 pip 安装时会自动安装这些依赖。


使用示例

以下是如何使用本项目的一个简单示例:

import efficient_kan  # 替换为实际模块名称
from efficient_kan.ChebyKAN import SomeClassOrFunction  # 替换为具体函数或类

# 示例用法
result = SomeClassOrFunction(input_data)
print(result)

目录

简介

Kolmogorov-Arnold 网络(KAN)是一类基于 Kolmogorov-Arnold 表示定理的神经网络架构,具有强大的非线性表达能力。本仓库对多种 KAN 的变体进行了实现,包括使用不同基函数(如傅里叶级数、Chebyshev 多项式、Jacobi 多项式、泰勒级数和小波变换)的方法。

实现

KAN

基础的 KAN 实现,使用了 B 样条作为基函数,提供了对 KAN 模型的基本理解。

FourierKAN

使用傅里叶级数作为基函数的 KAN 实现,能够捕捉输入数据的周期性特征。

ChebyKAN

使用 Chebyshev 多项式作为基函数的 KAN 实现,具有良好的数值稳定性和逼近能力。

JacobiKAN

使用 Jacobi 多项式作为基函数的 KAN 实现,通过调整参数 ( a ) 和 ( b ),可以灵活地适应不同的数据分布。

TaylorKAN

使用泰勒级数展开作为基函数的 KAN 实现,适用于需要高阶非线性特征的任务。

WaveletKAN

使用小波变换作为基函数的 KAN 实现,能够捕捉数据的局部特征或频域特征。

应用实例

以下是本人使用 KAN 进行的项目,欢迎大家复现并探讨:

  • MIMI-MNIST 教程:在 MNIST 数据集上应用 KAN 模型的教程,展示了如何构建和训练 KAN 来处理手写数字识别任务。

  • 股票预测教程:使用 KAN 模型进行股票价格预测的教程,包括数据预处理、模型构建和结果分析。

  • KAN 与 VGG 在 CIFAR-10 上的比较:比较了 KAN 模型和 VGG 网络在 CIFAR-10 数据集上的分类性能,展示了 KAN 的潜力。

参考资料

特别感谢以下开源项目对本仓库的支持和贡献:

许可证

本项目采用 MIT 许可证 开源。

Star History

Star History Chart


欢迎大家提出建议和改进,共同完善本仓库。如有任何问题,请提交 IssuePull Request