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 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 提供了一個高階、經過充分測試的橋樑,將脈衝神經科學與現代深度學習管線結合。