pytorch-sbs/README.md
2023-03-27 17:32:18 +02:00

83 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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): 13131343. 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.