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.
Last update: 2024/09/23 (I will update this answer from time to time... Please let me know if anything is missing!)
Simple Implementations of Neural Networks
- Since version 0.18 scikit-learn (Python) has an implementation of feed-forward neural networks (API documentation).
- FANN is a very popular implementation in C/C++ and has bindings for many other languages.
Deep Learning
Neural networks are very popular in research and industry ("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.)
- jax (Python) has a numpy-like interface and is very low-level, but there are high-level interfaces: trax, flax, or Haiku
- PyTorch from Facebook, in Python, can be extended with C/C++, high-level interfaces: Lightning, fastai, Ignite, skorch, catalyst
- TensorFlow from Google (C++/Python)
- Deeplearning4j (Java)
- PaddlePaddle from Baidu in CUDA/C++ with Python bindings
- NNabla from Sony in Cuda/C++11 with Python bindings
Inactive:
- mxnet (C++, Python, R, Scala, Julia, Matlab, Javascript)
- 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
- 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#)
- And I must mention my own project, which is called OpenANN (Documentation). It is written in C++ and has Python bindings.