aureservoir is a C++ library for analog reservoir computing neural networks (echo state networks).
Reservoir computing is a recent kind of recurrent neural network computation, where only the output weights are trained. This has the big advantage that training is a simple linear regression task and one cannot get into a local minimum. Such a network consists of a randomly created, fixed, sparse recurrent reservoir and a trainable output layer connected to this reservoir. Most known types are the "Echo State Network" and the "Liquid State Machine", which achieved very promising results on various machine learning benchmarks.
This library should be an open source (L-GPL) and very efficient implementation of Echo State Networks with bindings to scientific computation packages (so far to python/numpy, Pure Data and octave are in work, everyone is invited to make a Matlab binding) for offline and realtime simulations. It can be extended in an easy way with new simulation, training and adaptation algorithms, which are function objects and automatically used by the main classes.
Here are some key features of "aureservoir":
· standard simulation algorithm as in Jaeger's initial paper
· simulation algorithm with leaky integrator neurons
· algorithm with bandpass style neurons as introduced by Wustlich and Siewert
· simulation algorithm with general IIR-Filter neurons
· algorithm with IIR-Filter before neurons nonlinearity
· ESNs with an additional delay&sum readout
· simulation algorithm with additional squared state updates
· offline trainig algorithm using the pseudo inverse
· training algorithm using the least square solution
· algorithm with Ridge Regression / Tikhonov Regularization
· offline algorithm for delay&sum readout with pseudo inverse
· the C++ library FLENS
· Python and Numpy
· FFTW3 is needed for FFT calculation
The C++ aureservoir library consists of header files with template classes only, therefore you don't have to compile the library itself.
Small intro how to use SCons:
In general SCons checks for all dependencies and the compilation can be started with the command scons.
To install the compiled binary use scons install with root privileges.
Additionally you can set an alternative path for installed libraries and some optimization flags, the available options can be seen with scons -h.
Then you can set these option in example with scons arch=pentium4. The options will be stored so that you only have to set them once.
Important: You should first try to compile the C++ example in aureservoir/examples, because it gives more debug information in case something is going wrong! To do so go into the directory aureservoir/examples and compile it with the command scons or use scons -h to see which additional options can be set.
Now change to aureservoir/python and try to compile the python bindings.
Again type scons or scons -h to see additional options and compile the library. Afterward type scons install with root privileges if you want to install it system wide.