Efficient C++ library for analog reservoir computing neural networks (Echo State Networks).
2007-2008, Georg Holzmann



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.

For a theoretical overview and some papers about Echo State Networks see: Echo State Networks.


The library can be used with double or singe precision floating points and the interface of the main Echo State Network class is documented at aureservoir::ESN.
All different activation functions, simulation, training and adaptation algorithms, etc. can be changed at runtime.

Implemented simulation algorithms (see simulate.h):

Implemented training algorithms (see train.h):

Implemented reservoir adaptation algorithms:

New algorithms can be added by just deriving from the appropriate base class and overloading the relevant methods.


Aureservoir is free software. You can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation. Either version 2.1 of the License, or (at your option) any later version.

Releases of aureservoir can be found at

To get the latest source of aureservoir one can check out the SVN repository with the following instruction set:

svn co aureservoir
If you don't know how to use SVN checkout the description at aureservoir subversion page .

The sourcefore project page of aureservoir is, there you can also browse the code online at SVN browse.

Installation and Compilation

To get aureservoir finally working one needs to manage two steps: first the installation of all dependencies, second the compilation of aureservoir itself.
Here I will describe only the procedure of compiling the aureservoir library and its python bindings.

Installation of all dependencies:

Compilation of aureservoir:

Let me know if you have any problems, I am sure we will find a solution !


Most of the examples are in python and located in aureservoir/python/examples.
However, as the aureservoir python syntax is the same as in C++ one can use these examples analogous in C++.

Following python examples are included ATM:

Also one very basic C++ example is included:

See also examples.

Unit Tests

The algorithms are extensively tested. All are recalculated in python and tested against the C++ implementation.

The python tests are in the directory aureservoir/python/tests. However, there are still some (old) C++ tests in aureservoir/tests using cppunit.

To run all the python unit tests change to aureservoir/python/tests and type python This should give you an OK at the bottom of the output if everything works.

Feedback and Contact

Please don't hesitate to report problems, requests or any other feedback to grh _at_ mur _dot_ at.

Feel free to also use the bug and feature request tracker at the sourceforge page aureservoir tracker.

Generated on Wed Mar 12 21:16:05 2008 for aureservoir by  doxygen 1.5.3