Thanks to visit codestin.com
Credit goes to github.com

Skip to content

jakariaemon/snntorch

 
 

Repository files navigation

Introduction

Documentation Status

https://github.com/jeshraghian/snntorch/blob/master/docs/_static/img/snntorch_alpha.png?raw=true

snnTorch is a Python package for performing gradient-based learning with spiking neural networks. Rather than reinventing the wheel, it sits on top of PyTorch and takes advantage of its GPU accelerated tensor computation. Pre-designed spiking neuron models are seamlessly integrated within the PyTorch framework and can be treated as recurrent activation units.

snnTorch Structure

snnTorch contains the following components:

Component Description
snntorch a spiking neuron library like torch.nn, deeply integrated with autograd
snntorch.backprop variations of backpropagation commonly used with SNNs
snntorch.spikegen a library for spike generation and data conversion
snntorch.spikeplot visualization tools for spike-based data using matplotlib and celluloid
snntorch.surrogate optional surrogate gradient functions
snntorch.utils dataset utility functions

snnTorch is designed to be intuitively used with PyTorch, as though each spiking neuron were simply another activation in a sequence of layers. It is therefore agnostic to fully-connected layers, convolutional layers, residual connections, etc.

At present, the neuron models are represented by recursive functions which removes the need to store membrane potential traces for all neurons in a system in order to calculate the gradient. The lean requirements of snnTorch enable small and large networks to be viably trained on CPU, where needed. Provided that the network models and tensors are loaded onto CUDA, snnTorch takes advantage of GPU acceleration in the same way as PyTorch.

Citation

Under preparation.

Requirements

The following packages need to be installed to use snnTorch:

  • torch >= 1.2.0
  • numpy >= 1.17
  • pandas
  • matplotlib
  • math
  • celluloid

Installation

Run the following to install:

` python pip install snntorch `

To install snnTorch from source instead:

` git clone https://github.com/jeshraghian/snnTorch cd snnTorch python setup.py install `

API & Examples

A complete API is available here. Examples, tutorials and Colab notebooks are provided.

Getting Started

Here are a few ways you can get started with snnTorch:

Contributing

If you're ready to contribute to snnTorch, instructions to do so can be found here.

Acknowledgments

snnTorch was developed by Jason K. Eshraghian in the Lu Group (University of Michigan), with additional contributions from Xinxin Wang and Vincent Sun. Several features in snnTorch were inspired by the work of Friedemann Zenke, Emre Neftci, Doo Seok Jeong, Sumit Bam Shrestha and Garrick Orchard.

This work was supported by...

License & Copyright

snnTorch is licensed under the GNU General Public License v3.0: https://www.gnu.org/licenses/gpl-3.0.en.html.

About

Deep and online learning with spiking neural networks in Python

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 59.6%
  • Jupyter Notebook 40.2%
  • Makefile 0.2%