首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 汽车 游戏 社会热点 开源推荐 医疗健康 归档 标签 关于

GitHub 热门项目: effective-kan

摘要

GitHub项目:efficient-kan 仓库地址:https://github。com/Blealtan/efficient-kan Stars:4639 | 作者:Blealtan 项目描述:An efficient pure-PyTorch implementation of Kolmogorov-Arnold Network (KAN)。

the with and implementation functions
2026-05-22 1 阅读 约3分钟阅读 GitHub Trending
GitHub 项目:efficient-kan 仓库地址:https://github.com/Blealtan/efficient-kan 星级:4639 | 作者:布莱尔坦 项目描述:柯尔莫哥洛夫-阿诺德网络 (KAN) 的高效纯 PyTorch 实现。 =================================================== 自述文件内容: # Kolmogorov-Arnold 网络的高效实现 该存储库包含柯尔莫哥洛夫-阿诺德网络(KAN)的有效实现。 KAN 的原始实现可以在[此处](https://github.com/KindXiaoming/pykan)获得。 原始实现的性能问题主要是因为它需要扩展所有中间变量来执行不同的激活函数。 对于具有“in_features”输入和“out_features”输出的层,原始实现需要将输入扩展为形状为“(batch_size, out_features, in_features)”的张量来执行激活函数。 然而,所有激活函数都是一组固定基函数(B 样条函数)的线性组合;鉴于此,我们可以重新制定计算,用不同的基函数激活输入,然后将它们线性组合。 这种重新表述可以显着降低内存成本,并使计算成为简单的矩阵乘法,并且自然地适用于前向和后向传递。 问题在于**稀疏化**,据称这对于 KAN 的可解释性至关重要。 作者提出了在输入样本上定义的 L1 正则化,这需要对“(batch_size, out_features, in_features)”张量进行非线性操作,因此与重构不兼容。 相反,我将 L1 正则化替换为权重上的 L1 正则化,这在神经网络中更常见,并且与重构兼容。 作者的实现确实包括这种正则化以及论文中描述的正则化,所以我认为这可能会有所帮助。 需要更多的实验来验证这一点;但如果想要效率的话,至少原来的方法是不可行的。 另一个区别是,除了可学习的激活函数(B 样条)之外,原始实现还包括每个激活函数的可学习尺度。 我提供了一个选项“enable_standalone_scale_spline”,默认为“True”以包含此功能;禁用它将使模型更高效,但可能会损害结果。 它需要更多的实验。 2024-05-04 更新:@xiaol 暗示“base_weight”参数的常量初始化可能是 MNIST 上的问题。 现在,我已经更改了“base_weight”和“spline_scaler”矩阵,以在“nn.Linear”初始化之后使用“kaiming_uniform_”进行初始化。 它似乎在 MNIST 上工作得更好(~20% 到~97%),但我不确定这是否是一个好主意。