fmi-basel / stork

A differentiable spiking neural network simulator

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Stork

Stork is a library designed for the training of spiking neural networks (SNNs). In contrast to conventional deep learning methods, SNNs operate on spikes instead of continuous activation functions, this is why stork extends PyTorch's auto-differentiation capabilities with surrogate gradients (Zenke & Ganguli, 2018) to enable the training of SNNs with backpropagation through time (BPTT).
Stork supports leaky integrate-and-fire (LIF) neurons including adaptive LIF neurons and different kinds of synaptic connections allowing to use e.g. Dalian and Convolutional layers as well as constructing network architectures with recurrent or skip connections. For each neuron group, customizable activity regularizers are available to e.g. apply homeostatic plasticity.
Furthermore, stork uses per default initialization in the fluctuation-driven regime, what enhances SNN training especially in deep networks.

Citing Stork

If you find this library useful and use it for your research projects, please cite

Rossbroich, J., Gygax, J., and Zenke, F. (2022).
Fluctuation-driven initialization for spiking neural network training.
Neuromorph. Comput. Eng.

Bibtex Citation:

@article{rossbroich_fluctuation-driven_2022,
 title = {Fluctuation-driven initialization for spiking neural network training},
 author = {Rossbroich, Julian and Gygax, Julia and Zenke, Friedemann},
 doi = {10.1088/2634-4386/ac97bb},
 journal = {Neuromorphic Computing and Engineering},
 year = {2022},
}

Setup

  1. Create and activate a virtual environment.
  2. Download stork or clone the repository with
    git clone <git@github.com>:fmi-basel/stork.git
  3. Change into the stork directory.
    cd stork
  4. Install the requirements with
    pip install -r requirements.txt
  5. Install stork with
    pip install -e .

Examples

The examples directory contains notebooks and Python scripts that contain examples of different complexities.

About

A differentiable spiking neural network simulator

License:MIT License


Languages

Language:Python 100.0%