Skip to main content

Norse

A library to do deep learning with spiking neural networks.

Test Status

The purpose of this library is to exploit the advantages of bio-inspired neural components, who are sparse and event-driven - a fundamental difference from artificial neural networks. Norse expands PyTorch with primitives for bio-inspired neural components, bringing you two advantages: a modern and proven infrastructure based on PyTorch and deep learning-compatible spiking neural network components.

Documentation: https://norse.github.io/norse/build/html/index.html

Example usage: template tasks

Norse comes packed with a few example tasks, such as MNIST, but is generally meant for use in specific deep learning tasks (see below section on long short-term spiking neural networks):

python run_mnist.py

Getting Started

Norse is a machine learning library that builds on the PyTorch infrastructure. While we have a few tasks included, it is meant to be used in designing and evaluating experiments involving biologically realistic neural networks.

This readme explains how to install norse and apply it in your own experiments.

Installation

Note that this guide assumes you are on a terminal friendly environment with access to the pip, python and git commands. Python version 3.7+ is required.

Installing from PyPi

pip install norse

Installing from source

git clone https://github.com/norse/norse
cd norse
python setup.py install

The primary dependencies of this project are torch, tensorboard and OpenAI gym. A more comprehensive list of dependencies can be found in requirements.txt.

Running examples

The directory norse/task contains three example experiments, serving as short, self contained, correct examples (SSCCE). You can execute them by invoking the run_*.py scripts from the base directory.

  • To train an MNIST classification network, invoke
    python run_mnist.py
    
  • To train a CIFAR classification network, invoke
    python run_cifar.py
    
  • To train the cartpole balancing task with Policy gradient, invoke
    python run_gym.py
    

The default choices of hyperparameters are meant as reasonable starting points.

Example on using the library: Long short-term spiking neural networks

long short-term spiking neural networks from the paper by G. Bellec, D. Salaj, A. Subramoney, R. Legenstein, and W. Maass is one interesting way to apply norse:

from norse.torch.module import LSNNLayer, LSNNCell
# LSNNCell with 2 inputs and 10 outputs
layer = LSNNLayer(LSNNCell, 2, 10)
# 5 batch size running on CPU
state = layer.initial_state(5, "cpu") 
# Generate data of shape [5, 2, 10]
data  = torch.zeros(2, 5, 2)
# Tuple of output data and layer state
output, new_state = layer.forward(data, state) 

Similar work

A number of projects exist that attempts to leverage the strength of bio-inspired neural networks, however none of them are fully integrated with modern machine-learning libraries such as Torch or Tensorflow. Norse was created for two reasons: to 1) apply findings from decades of research in practical settings, and to 2) accelerate our own research within bio-inspired learning.

The below list of projects serves to illustrate the state of the art, while explaining our own incentives to create and use norse.

  • SNN toolbox
    • This toolbox `automates the conversion of pre-trained analog to spiking neural networks'. The tool is solely for already trained networks and omits the (possibly platform specific) training.
  • Neuron Simulation Toolkit (NEST)
    • NEST constructs and evaluates highly detailed simulations of spiking neural networks. This is useful in a medical/biological sense but maps poorly to large datasets and deep learning.
  • Nengo DL
    • Nengo is a neuron simulator, and Nengo-DL is a deep learning network simulator that optimised spike-based neural networks based on an approximation method suggested by Hunsberger and Eliasmith (2016). This approach maps to, but does not build on, the deep learning framework Tensorflow, which is fundamentally different from incorporating the spiking constructs into the framework itself.

Contributing

Please refer to the contributing.md

Credits

Norse is created by

License

LGPLv3. See LICENSE for license details.

Release files for norse 0.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for norse 0.0.1
File Size Uploaded
norse-0.0.1.tar.gz 25.5 kB Details

Release files / norse-0.0.1.tar.gz

Download URL norse-0.0.1.tar.gz
Size 25.5 kB
Tags Source
SHA-256 checksum
How to use checksums
6f6837e84e75fd2e4648652d82e7b333b2c07c0b2866fb0d5234bde1b04187de
BLAKE2b-256 checksum
How to use checksums
3715ec15a34565f2059241d3fbaebbf90501aa269fafa132f9623629eb7bcf0c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3

Release history Release notifications | RSS feed

1.1.0

1 release file

1.0.0

5 release files

0.0.7

1 release file

0.0.6

1 release file

0.0.5

1 release file

0.0.4

1 release file

0.0.3

2 release files

0.0.2

2 release files

This release

0.0.1 This release

1 release file

0.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page