Brainstorm makes working with neural networks fast, flexible and fun.
Combining lessons from previous projects with new design elements, and written entirely in Python, Brainstorm has been designed to work on multiple platforms with multiple computing backends.
A good point to start is the brief walkthrough of the cifar10_cnn.py
example.
More documentation is in progress, and hosted on ReadTheDocs.
If you wish, you can also run the data preparation scripts (data
directory) and look at some basic examples (examples
directory).
Brainstorm is under active development and is currently in beta.
The currently available feature set includes recurrent (simple, LSTM, Clockwork), 2D convolution/pooling, Highway and batch normalization layers. API documentation is fairly complete and we are currently working on tutorials and usage guides.
Brainstorm abstracts computations via handlers with a consistent API. Currently, two handlers are provided: NumpyHandler
for computations on the CPU (through Numpy/Cython) and PyCudaHandler
for the GPU (through PyCUDA and scikit-cuda).
Here are some quick instructions for installing the latest master branch on Ubuntu.
# Install pre-requisites
sudo apt-get update
sudo apt-get install python-dev libhdf5-dev git python-pip
# Get brainstorm
git clone https://github.com/IDSIA/brainstorm
# Install
cd brainstorm
[sudo] pip install -r requirements.txt
[sudo] python setup.py install
# Build local documentation (optional)
sudo apt-get install python-sphinx
make docs
# Install visualization dependencies (optional)
sudo apt-get install graphviz libgraphviz-dev pkg-config
[sudo] pip install pygraphviz --install-option="--include-path=/usr/include/graphviz" --install-option="--library-path=/usr/lib/graphviz/"
To use your CUDA installation with brainstorm:
$ [sudo] pip install -r pycuda_requirements.txt
Set location for storing datasets:
echo "export BRAINSTORM_DATA_DIR=/home/my_data_dir/" >> ~/.bashrc
If you have any suggestions or questions, please post to the Google group.
If you encounter any errors or problems, please let us know by opening an issue.
MIT License. Please see the LICENSE file.
Klaus Greff and Rupesh Srivastava would like to thank Jürgen Schmidhuber for his continuous supervision and encouragement. Funding from EU projects NASCENCE (FP7-ICT-317662) and WAY (FP7-ICT-288551) was instrumental during the development of this project. We also thank Nvidia Corporation for their donation of GPUs.
If you use Brainstorm in your research, please cite us as follows:
Klaus Greff, Rupesh Kumar Srivastava and Jürgen Schmidhuber. 2016. Brainstorm: Fast, Flexible and Fun Neural Networks, Version 0.5. https://github.com/IDSIA/brainstorm
Bibtex:
@misc{brainstorm2015,
author = {Klaus Greff and Rupesh Kumar Srivastava and Jürgen Schmidhuber},
title = {{Brainstorm: Fast, Flexible and Fun Neural Networks, Version 0.5}},
year = {2015},
url = {https://github.com/IDSIA/brainstorm}
}