开源推荐
morning
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%),但我不确定这是否是一个好主意。
相关推荐
GitHub 热门项目:gemma-2B-10M
GitHub项目:gemma-2B-10M 仓库地址:https://github。com/mustafaaljadery/gemma-2B-10M Stars
06-29
👁 None
★ 95
GitHub 热门项目:efflux-backend
GitHub项目:efflux-backend 仓库地址:https://github。
06-28
👁 None
★ 95
GitHub 热门项目:transformers-ruby
GitHub项目:transformers-ruby 仓库地址:https://github。
06-28
👁 None
★ 95
GitHub 热门项目:MesDoKubernetes
GitHub项目:MesDoKubernetes 仓库地址:https://github。
06-28
👁 None
★ 95
GitHub 热门项目: 项目游牧者
GitHub项目:project-nomad 仓库地址:https://github。com/Crosstalk-Solutions/project-nomad
06-28
👁 None
★ 95