Skip to content

Latest commit

 

History

History
64 lines (48 loc) · 3.87 KB

README.md

File metadata and controls

64 lines (48 loc) · 3.87 KB

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 <[email protected]>: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.

Funding

The development of Stork was supported by the Swiss National Science Foundation [grant number PCEFP3_202981].