norse/norse
Deep learning with spiking neural networks (SNNs) in PyTorch.
Norse – 深度学习脉冲神经网络库
它是什么 – Norse 是一个 Python 库,为 PyTorch 添加了受生物启发的、事件驱动的神经组件(脉冲神经元、突触动力学、编码器/解码器等)。它让你能够使用与传统深度学习模型相同的工具,构建、训练和评估脉冲神经网络(SNN)。
为什么重要 – 脉冲网络稀疏且基于离散脉冲运行, 更贴近大脑的计算方式,并有望在神经形态硬件上实现能效高的推理。Norse 为研究者提供了生产就绪、兼容 PyTorch 的完整栈,使他们在不放弃优化器、数据加载器和分布式训练生态系统的前提下,实验 SNN。
安装方式 – 支持常见的 Python 包安装渠道:
pip install norseconda install -c conda-forge norse- Docker 镜像
quay.io/norse/norse - 直接从源码安装:
pip install git+https://github.com/norse/norse。
快速入门 – 项目提供可直接运行的示例,可通过 norse.task 模块启动,例如:
python -m norse.task.mnist # 训练脉冲 MNIST 分类器
python -m norse.task.cifar10 # 在 CIFAR‑10 上训练
python -m norse.task.cartpole # 使用策略梯度控制 cart‑pole
Google‑Colab notebook 演示了一个脉冲卷积分类器,能够达到 >99 % 的 MNIST 准确率。
核心 API – 最常用的原语位于 norse.torch 下:
LIFCell/LICell– 漏积分与发放(leaky‑integrate‑and‑fire)和漏积分器神经层。SequentialState– 一个有状态的包装器,允许你像使用普通nn.Sequential那样堆叠脉冲层。LSNNRecurrent– 长短期脉冲网络(LSNN)的实现,用于递归任务。 这些组件的行为与标准 PyTorch 模块相同:接受张量,返回输出脉冲和更新后的隐藏状态。
兼容性 – 支持 PyTorch ≥ 1.9,并可与 PyTorch‑Lightning 集成进行多 GPU 训练(norse.task.mnist_pl)。
社区与支持 – 活跃的 Discord 频道、CI 徽章、代码覆盖率报告,以及可直接引用的 Zenodo 发布。库采用 LGPL‑v3 许可证,欢迎通过常规 GitHub 工作流贡献代码。
何时使用 – 如果你需要快速原型 SNN、探索神经形态算法,或在 GPU/CPU 上运行脉冲模型以便后续迁移到专用硬件,Norse 提供了一个高级、经过充分测试的桥梁,将脉冲神经科学与现代深度学习流水线结合。