norse/norse

Deep learning with spiking neural networks (SNNs) in PyTorch.

Norse – 深度学习脉冲神经网络库

它是什么 – Norse 是一个 Python 库,为 PyTorch 添加了受生物启发的、事件驱动的神经组件(脉冲神经元、突触动力学、编码器/解码器等)。它让你能够使用与传统深度学习模型相同的工具,构建、训练和评估脉冲神经网络(SNN)。

为什么重要 – 脉冲网络稀疏且基于离散脉冲运行, 更贴近大脑的计算方式,并有望在神经形态硬件上实现能效高的推理。Norse 为研究者提供了生产就绪、兼容 PyTorch 的完整栈,使他们在不放弃优化器、数据加载器和分布式训练生态系统的前提下,实验 SNN。

安装方式 – 支持常见的 Python 包安装渠道:

  • pip install norse
  • conda 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 提供了一个高级、经过充分测试的桥梁,将脉冲神经科学与现代深度学习流水线结合。