Brainstorm makes working with neural networks fast, flexible and fun.
It combines lessons from previous projects with new design elements. It is written completely in Python, and has been designed to work on multiple platforms with multiple computing backends.
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 install python-dev libhdf5-dev
# Get brainstorm
git clone git@github.com:IDSIA/brainstorm.git
# Install
cd brainstorm
pip install -r requirements.txt
python setup.py install
To use your CUDA installation with brainstorm:
$ 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.
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.