norse/norse

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

Norse – スパイキングニューラルネットワーク用ディープラーニングライブラリ

What it is – Norse は Python ライブラリで、バイオインスパイアドなイベント駆動型ニューラルコンポーネント(スパイキングニューロン、シナプスダイナミクス、エンコーダ/デコーダなど)を PyTorch に追加します。従来のディープラーニングモデルと同じツールチェーンで、スパイキングニューラルネットワーク(SNN)の構築・学習・評価が可能です。

Why it matters – スパイキングネットワークは疎で離散的なスパイクで動作し、脳の計算に近いだけでなく、ニューロモルフィックハードウェア上でエネルギー効率の高い推論が期待できます。Norse は研究者に対し、最適化手法やデータローダ、分散学習といった豊富なエコシステムを犠牲にせずに SNN を試すための、プロダクションレディで PyTorch 互換のスタックを提供します。

Installation – 通常の Python パッケージ取得方法をサポート:

  • pip install norse
  • conda install -c conda-forge norse
  • Docker イメージ quay.io/norse/norse
  • ソースから直接インストール:pip install git+https://github.com/norse/norse

Getting started – プロジェクトは norse.task モジュールで起動できる実行可能サンプルを同梱しています。例:

python -m norse.task.mnist      # スパイキング MNIST クラスifier を学習
python -m norse.task.cifar10    # CIFAR‑10 で学習
python -m norse.task.cartpole   # ポリシー勾配で cart‑pole を制御

Google‑Colab ノートブックでは、99 % 超の MNIST 精度を達成するスパイキング畳み込み分類器がデモされています。

Core API – 最も利用頻度の高いプリミティブは norse.torch 配下にあります:

  • LIFCell / LICell – 漏れ積分・発火(leaky‑integrate‑and‑fire)および漏れ積分ニューロン層。
  • SequentialState – 状態を保持するラッパーで、通常の nn.Sequential のようにスパイキング層を積み重ねられます。
  • LSNNRecurrent – 再帰タスク向けの Long Short‑Term Spiking Network(LSNN)実装。 これらのコンポーネントは標準的な PyTorch モジュールと同様に振る舞い、テンソルを受け取り出力スパイクと更新された隠れ状態を返します。

Compatibility – PyTorch ≥ 1.9 に対応し、PyTorch‑Lightning と統合してマルチ GPU 学習(norse.task.mnist_pl)が可能です。

Community & support – 活発な Discord チャンネル、CI バッジ、コードカバレッジレポート、そして引用可能な Zenodo リリースがあります。ライブラリは LGPL‑v3 ライセンスで提供され、通常の GitHub ワークフローによるコントリビューションを歓迎します。

When to use it – SNN のプロトタイピング、ニューロモルフィックアルゴリズムの探索、または専用ハードウェアに移行する前に GPU/CPU 上でスパイクベースのモデルを走らせたい場合、Norse はスパイキング神経科学と最新ディープラーニングパイプラインを結ぶ高レベルで十分にテストされたブリッジを提供します。