A deep learning library for spiking neural networks.
Norse aims to exploit the advantages of bio-inspired neural components, which 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: norse.github.io/norse/
To try Norse, the best option is to run one of the jupyter notebooks on Google collab.
Alternatively, you can install Norse and run one of the included tasks such as MNIST:
python -m norse.task.mnist
The {ref}page-started
and {ref}page-working
pages show how to build your own models with Norse while explaining a few fundamental concepts around spiking neural networks.
Note that we assume you are using Python version 3.7+, are in a terminal friendly environment, and have installed the necessary requirements,
depending on your installation method.
More detailed installation instructions are available here: {ref}page-installing
.
Method | Instructions | Prerequisites |
---|---|---|
From PyPi |
pip install norse
| Pip |
From source |
pip install -qU git+https://github.com/norse/norse
| Pip, PyTorch |
With Docker |
docker pull quay.io/norse/norse
| Docker |
From Conda |
conda install -c norse norse
| Anaconda or Miniconda |
Norse is bundled with a number of example tasks, serving as short, self contained, correct examples (SSCCE).
They can be run by invoking the norse
module from the base directory.
More information and tasks are available in our documentation and in your console by typing: python -m norse.task.<task> --help
, where <task>
is one of the task names.
python -m norse.task.mnist
python -m norse.task.cifar10
python -m norse.task.cartpole
Norse is compatible with PyTorch Lightning, as demonstrated in the PyTorch Lightning MNIST task variant (requires PyTorch lightning):
python -m norse.task.mnist_pl --gpus=4
Read more in our {ref}page-spiking
and visit our Jupyter Notebook examples.
Norse is meant to be used as a library for spiking neural networks in customized deep learning models.
This typically means porting other models to the spiking/temporal domain,
extending existing models,
or starting completely from scratch.
All three use cases are motivated and briefly described in {ref}page-working
.
Unfortunately, spiking neural networks are resource intensive.
The page on {ref}page-hardware
explains how to accelerate the simulations using dedicated hardware.
Contributions are warmly encouraged and always welcome. However, we also have high expectations around the code base so if you wish to contribute, please refer to our contribution guidelines.
Norse is created by
More information about Norse can be found in our documentation. The research has received funding from the EC Horizon 2020 Framework Programme under Grant Agreements 785907 and 945539 (HBP) and by the Deutsche Forschungsgemeinschaft (DFG, German Research Fundation) under Germany’s Excellence Strategy EXC 2181/1 - 390900948 (the Heidelberg STRUCTURES Excellence Cluster).
If you use Norse in your work, please cite it as follows:
@software{norse2021,
author = {Pehle, Christian and
Pedersen, Jens Egholm},
title = ,
month = jan,
year = 2021,
note = {Documentation: https://norse.ai/docs/},
publisher = {Zenodo},
version = {0.0.6},
doi = {10.5281/zenodo.4422025},
url = {https://doi.org/10.5281/zenodo.4422025}
}
Norse is actively applied and cited in the literature. We are keeping track of the papers cited by Norse in our documentation.
LGPLv3. See LICENSE for license details.