Skip to content

davrot/pytorch-sbs

Repository files navigation

pytorch-sbs

SbS Extension for PyTorch

Based on these scientific papers

Back-Propagation Learning in Deep Spike-By-Spike Networks
David Rotermund and Klaus R. Pawelzik
Front. Comput. Neurosci., https://doi.org/10.3389/fncom.2019.00055
https://www.frontiersin.org/articles/10.3389/fncom.2019.00055/full

Efficient Computation Based on Stochastic Spikes
Udo Ernst, David Rotermund, and Klaus Pawelzik
Neural Computation (2007) 19 (5): 1313–1343. https://doi.org/10.1162/neco.2007.19.5.1313
https://direct.mit.edu/neco/article-abstract/19/5/1313/7183/Efficient-Computation-Based-on-Stochastic-Spikes

Python

It was programmed with 3.10.4. And I used some 3.10 Python expression. Thus you might get problems with older Python versions.

C++

You need to modify the Makefile in the C++ directory to your Python installation.

In addition your Python installation needs the PyBind11 package installed. You might want to perform a
pip install pybind11
The Makefile uses clang as a compiler. If you want something else then you need to change the Makefile. For CUDA I used version 12.0.

Config files and pre-existing weights

Three .json config files are required:

dataset.json : Information about the dataset

network.json : Describes the network architecture

def.json : Controlls the other parameters

If you want to load existing weights, just put them in a sub-folder called Previous

Other relevant scientific papers

NNMF

Learning the parts of objects by non-negative matrix factorization
Lee, Daniel D., and H. Sebastian Seung. Nature 401.6755 (1999): 788-791.
https://doi.org/10.1038/44565

Algorithms for non-negative matrix factorization.
Lee, Daniel, and H. Sebastian Seung. Advances in neural information processing systems 13 (2000).
https://proceedings.neurips.cc/paper/2000/hash/f9d1152547c0bde01830b7e8bd60024c-Abstract.html

SbS

Massively Parallel FPGA Hardware for Spike-By-Spike Networks
David Rotermund, Klaus R. Pawelzik
https://doi.org/10.1101/500280

Biologically plausible learning in a deep recurrent spiking network David Rotermund, Klaus R. Pawelzik
https://doi.org/10.1101/613471

Accelerating Spike-by-Spike Neural Networks on FPGA With Hybrid Custom Floating-Point and Logarithmic Dot-Product Approximation
Yarib Nevarez, David Rotermund, Klaus R. Pawelzik, Alberto Garcia-Ortiz
https://doi.org/10.1109/access.2021.3085216

Tested installation (under Fedora 37)

mkdir PySource
cd PySource
wget https://www.python.org/ftp/python/3.11.2/Python-3.11.2.tgz
tar -xvzf Python-3.11.2.tgz
cd Python-3.11.2
./configure --prefix=/home/[YOURUSERNAME]/P3.11 --enable-optimizations
make -j 10
make install

cd /home/[YOURUSERNAME]/P3.11/bin
./pip3 install --upgrade pip
./pip3 install numpy scipy pandas flake8 pep8-naming black matplotlib seaborn ipython jupyterlab mypy dataclasses-json dataconf mat73 ipympl torch torchtext pywavelets scikit-image opencv-python scikit-learn tensorflow_datasets tensorboard tqdm argh sympy jsmin pybind11 pybind11-stubgen pigar asciichartpy torchvision torchaudio tensorflow natsort

Please adapt the .env file in the network directory before compling the PyBind11 SbS modules.

About

SbS Extension for PyTorch

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published