libgnn : The Gradient Retropropagation Machine Library. A demonstration of a what can be accomplished by GRM-based design.
Download the source code and get the documentation. Also, check out grm: neural networks for your command line!
One of the mayor efforts and advances in Strong AI investigation is the development of Neural Networks.
Nowadays, Neural Networks have become one of the most flexible and powerful tools to model continuous systems.
We provide a flexible, modern and unified scheme for them: Gradient Retropropagation Machines.
The libgnn installation procedure has been almost standarized. You should be able to run now:
Step 1: Install GSL. The library can be obtained here, and is available for almost all platforms and Unix flavours.
Step 2 (from binaries): Get the binaries from here. Install the headers in your compiler's include directory, and the compiled library in the lib directory.
Step 2 (from sources - recommended!): Get the sources from here. Execute
% ./configure
% make
% make install
libgnn should install into your /usr/local/* directories.
Step 3: To link a program with the library, use the libgnn-config script, which is also provided in the distribution: a) to compile, run
% gcc -c `libgnn-config --cflags` my_program.c -o my_program.o
b) to link against the needed libs:
% gcc -c `libgnn-config --libs` my_program.o -o my_program
You can browse the documentation generated by Doxygen here. Under "Modules" are the documentation of all libgnn's pieces.
A GRM can be viewed as a module able to compute a vectorial function which takes two arguments: input vector x and parameters w, as ilustrated by the following scheme:

Forward Evaluation 
Backward Evaluation
A GRM is able to compute its gradient using the retropropagation equations:
![]() |
| The Retropropagation Equations. |
...which are also known as the Backprop-Equations, and can be ilustrated by the Backward Evaluation-Scheme shown above. They enable us to define a modular scheme for composing functional modules:
![]() |
| Compositional Scheme Examples. |