I am looking for an open source neural network library. So far, I have looked at FANN, WEKA, and OpenNN. Are the others that I should look at? The criteria, of course, is documentation, examples, and ease of use.
-
C/C++ Perceptron: http://sourceforge.net/projects/ccperceptron/ – SomethingSomething Oct 16 '14 at 02:58
-
Here's a FeedForward Network library in C/C++: https://sourceforge.net/projects/c-c-neural-networks/ – SomethingSomething Aug 09 '15 at 21:59
-
For distributed neural networks in Java and Scala: http://deeplearning4j.org – racknuf Aug 14 '15 at 00:13
4 Answers
Last update: 2023/07/17 (I will update this answer from time to time...)
Simple Implementations of Neural Networks
- FANN is a very popular implementation in C/C++ and has bindings for many other languages.
- In scikit-learn (Python) 0.18 (current developement version) there will be an implementation of feed-forward neural networks (API documentation).
- And I must mention my own project, which is called OpenANN (Documentation). It is written in C++ and has Python bindings.
Deep Learning
Because neural networks are quite popular in research and industry at the moment ("deep learning") there are many research libraries available. Most of them are kind of easy to set up, integrate, and use. Although not as easy as the libraries mentioned above. They provide leading edge functionality and high performance (with GPUs etc.). Most of these libraries also have automatic differentiation. You can easily specify new architectures, loss functions etc. and don't have to specify the backpropagation manually.
- Keras: has a long history as a high-level interface to other neural network libraries. Its current purpose is to serve as a high-level interface for TensorFlow, PyTorch, and Jax; (Previously it was part of TensorFlow and before that it could use Tensorflow, Theano, and CNTK as a backend.)
- TensorFlow from Google (C++/Python)
- PyTorch from Facebook, in Python, can be extended with C/C++, high-level interfaces: Lightning, fastai, Ignite, skorch, catalyst
- jax (Python) has a numpy-like interface and is very low-level, but there are high-level interfaces: trax, flax, or Haiku
- mxnet (C++, Python, R, Scala, Julia, Matlab, Javascript)
- Deeplearning4j (Java)
- PaddlePaddle from Baidu in CUDA/C++ with Python bindings
- NNabla from Sony in Cuda/C++11 with Python bindings
Inactive:
- CNTK from Microsoft (training in Python / evaluation in C++/C#/Java/Python)
- Chainer (Python)
- Caffe from Berkeley Vision and Learning Center in C++ with Python bindings
- Darknet: CNNs in C, known for the implementations of the YOLO object detector.
- Neon from Intel Nervana provides very efficient implementations (Python)
- MatConvNet (Matlab)
- Theano (Python) and its high-level APIs:
- Pylearn 2
- Theanets
- scikit-neuralnetwork
- Lasagne
- Blocks based on Theano (Python)
- cuda-convnet2 in CUDA/C++ with Python bindings
- Hebel (Python)
- Caffe2 from Facebook in C++ with Python bindings; has been joined with PyTorch
- Neural Networks for Torch 7 (Lua, Torch 7 is a "Matlab-like environment", overview of machine learning algorithms in Torch)
- PyBrain (Python) contains different types of neural networks and training methods.
- Encog (Java and C#)

- 3,058
- 3
- 25
- 36
-
Interesting options; aren't you the author of OpenAnn? That would certainly be my answer to this question--seriously fast, stable, and excellent resolution when benchmarked against Orange & Weka. In fact, we would probably be using it regularly but for the lack for of NumPy bindings. – doug Oct 18 '12 at 04:37
-
Oh, that is interesting. :) Do you have any benchmark results (comparisons to Weka and Orange) that you can show me? I think python bindings would not be too hard to implement. I will have a look at that. – alfa Oct 23 '12 at 11:09
-
I updated my answer. A lot of things happened since last year in the neural networks community. @doug OpenANN now has Python/NumPy bindings. Although they might not be extremely fast. However, that could be improved. :) – alfa Oct 05 '13 at 13:23
-
See also this lib: http://sourceforge.net/projects/c-c-neural-networks/ – SomethingSomething Aug 11 '15 at 07:30
-
1Encog C# is very good, and there are many books for it, but sadly there is no GPU support and the source code was last updated 2 years ago. – Mario Sep 13 '19 at 15:05
If you want flexibility in defining network configurations, like sharing parameters or creating different types of convolutional architectures, then you should look at the family of Torch libraries: http://www.torch.ch/.
I haven't gone through the documentation for Torch 7 yet, but documentation for the other versions was pretty decent and the code is very readable (in Lua and C++).

- 4,463
- 1
- 23
- 28
You can use accord.net framework. http://accord-framework.net/
It contains Neural learning algorithms such as Levenberg-Marquardt, Parallel Resilient Backpropagation, the Nguyen-Widrow initialization algorithm, Deep Belief Networks and Restrictured Boltzmann Machines, and many other neural network related items.

- 438
- 4
- 7
Netlab is a commonly used Matlab library. (free and open source)
The Netlab toolbox is designed to provide the central tools necessary for the simulation of theoretically well founded neural network algorithms and related models for use in teaching, research and applications development. It is extensively used in the MSc by Research in the Mathematics of Complex Systems.
The Netlab library includes software implementations of a wide range of data analysis techniques, many of which are not yet available in standard neural network simulation packages. Netlab works with Matlab version 5.0 and higher but only needs core Matlab (i.e. no other toolboxes are required). It is not compatible with earlier versions of Matlab.

- 77,520
- 72
- 342
- 501