This is the API documentation of OpenANN.
OpenANN is an open source library for artificial neural networks. It is open for users that want to apply ANN to their problems, developers and researchers that want to implement new technologies and students that want to understand the tricks that are required to implement neural networks. It follows a minimal dependency policy, i.e. we rely on only a few libraries and tools. It is not designed to use the full potential of GPUs though, but it is possible to run it on very limited systems, e.g. robotic platforms.
To start using OpenANN it might be helpful to take a look at Getting Started to see how it works.
- Various types of artificial neural networks
- Multilayer neural network
- Convolutional neural network (CNN) with convolutional layers, subsampling layers and max-pooling layers
- Random projections for data and network compression and extreme learning machines
- Restricted Boltzmann machines (RBM) and sparse auto-encoders (SAE) for unsupervised pretraining
- Optimization algorithms
- Mini-batch stochastic gradient descent (MBSGD) for large networks
- Conjugate gradient (CG) for large networks
- Limited storage Broyden-Fletcher-Goldfarb-Shanno (LBFGS) for networks of medium size
- Levenberg-Marquardt algorithm (LMA) for small networks
- (Increasing population size) covariance matrix adaption evolution strategies (IPOPCMAES) for reinforcement learning
- Preprocessing methods
- Ensemble methods
- Supported languages
OpenANN has been used to
- develop a new network compression technique based on compressed sensing that can be used for supervised as well as for reinforcement learning 
- examine invariant pattern recognition approaches with constrained higher order nodes
 A. Fabisch, Y. Kassahun, H. Wöhrle and F. Kirchner: Learning in compressed space, Neural Networks 42, pp. 83-93, ISSN 0893-6080, 2013.
The license is GPL 3. You can find the license text in the file COPYING.