norse/norse

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

Norse – 深度學習脈衝神經網路函式庫

它是什麼 – Norse 是一個 Python 函式庫,為 PyTorch 添加了受生物啟發的、事件驅動的神經元元件(脈衝神經元、突觸動態、編碼器/解碼器等)。它讓你能以與傳統深度學習模型相同的工具,建構、訓練與評估脈衝神經網路(SNN)。

為什麼重要 – 脈衝網路稀疏且以離散脈衝運作,與大腦計算方式更為接近,且在神經形態硬體上有望實現能源高效的推論。Norse 為研究者提供了可直接投入生產、相容於 PyTorch 的完整堆疊,讓他們在不拋棄優秀的 optimizer、data loader 與分散式訓練生態系的前提下,探索 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 提供了一個高階、經過充分測試的橋樑,將脈衝神經科學與現代深度學習管線結合。