I think it depends on the language you want to develop. In my opinion these are good choices for some programming languages:
Matlab:
- Neural Network toolbox is a good option, as a lot of different configurations and types of ann, with a comprehensive documentation and examples.
Java:
- neuroph (http://neuroph.sourceforge.net/) - if you only want to deal with neural networks
- weka (http://www.cs.waikato.ac.nz/ml/weka/) - as a lot of machine learning algorithms and I think it as 1 or 2 neural networks implementations, you can always extend by looking in the web (http://www.laps.ufpa.br/aldebaro/weka/index.html ; http://wekaclassalgos.sourceforge.net/ ; or use the package manager from weka 3.7 (developer version) )
- DL4J - ( https://deeplearning4j.org/ ) deep learning for java. Easy way to start and use Deep learning models in java. Has converters able to load models from other distributions (caffe, tensorflow, torch)
C:
- FANN ( http://leenissen.dk/fann/wp/ )- interesting, clean implementation and bindable to other languages (c++,c#,java,python,R,php) (http://leenissen.dk/fann/wp/language-bindings/)
- Dlib
- caffe (http://caffe.berkeleyvision.org/ ) - Before tensorflow (I think) it was the "go to" framework to develop work using the latest neural network models (Convolution, Recurrent. AutoEncoders).
- caffe 2 ( http://caffe2.ai/ ) - Facebook open source framework, has bindings to c++ but is tuned for python, based on caffe.
Python (receiving more attention at the moment):
- Pybrain (http://pybrain.org/pages/features) - I have only done some basic tests with it, but I found it simple and easy to use and build upon.
- Scikit ( http://scikit-learn.org/ ) - A toolbox with several machine learning algorithms, including neural networks.
- Tensorflow ( https://www.tensorflow.org/ ) - Google's framework. A lot of documentation and support. Several tutorials and large community.
- Pytorch ( http://pytorch.org/ ) - It introduces the idea of dynamic graphs for gpu computing which speeds ups the training and testing in some deep neural network models. It also has great support for the community with lot of examples and tutorials around.
- Theano ( http://deeplearning.net/software/theano/ ) - One of the first before caffe, tensorflow and pytorch gain popularity. Only did some tests and opted for tensorflow at the time.
- CNTK ( https://www.microsoft.com/en-us/cognitive-toolkit/ ) Microsoft's framework, provides bindings for python, c++ c# and Branscript (a language for CNTK)
- Keras ( https://keras.io/ ) - Keras is a high level framework, which can have other frameworks has backend (tensorflow, cntk, theano) . It has a simple code interface which allows quick prototyping and testing.
But after extensive study, I found that some minor but crucial things can't be done using built in functions. For example, if I want to assign each neuron, a different transfer function, I cant do it using built in functions...
That is why, I have started writing my own code for everything...
I think it depends on the language you want to develop. In my opinion these are good choices for some programming languages:
Matlab:
- Neural Network toolbox is a good option, as a lot of different configurations and types of ann, with a comprehensive documentation and examples.
Java:
- neuroph (http://neuroph.sourceforge.net/) - if you only want to deal with neural networks
- weka (http://www.cs.waikato.ac.nz/ml/weka/) - as a lot of machine learning algorithms and I think it as 1 or 2 neural networks implementations, you can always extend by looking in the web (http://www.laps.ufpa.br/aldebaro/weka/index.html ; http://wekaclassalgos.sourceforge.net/ ; or use the package manager from weka 3.7 (developer version) )
- DL4J - ( https://deeplearning4j.org/ ) deep learning for java. Easy way to start and use Deep learning models in java. Has converters able to load models from other distributions (caffe, tensorflow, torch)
C:
- FANN ( http://leenissen.dk/fann/wp/ )- interesting, clean implementation and bindable to other languages (c++,c#,java,python,R,php) (http://leenissen.dk/fann/wp/language-bindings/)
- Dlib
- caffe (http://caffe.berkeleyvision.org/ ) - Before tensorflow (I think) it was the "go to" framework to develop work using the latest neural network models (Convolution, Recurrent. AutoEncoders).
- caffe 2 ( http://caffe2.ai/ ) - Facebook open source framework, has bindings to c++ but is tuned for python, based on caffe.
Python (receiving more attention at the moment):
- Pybrain (http://pybrain.org/pages/features) - I have only done some basic tests with it, but I found it simple and easy to use and build upon.
- Scikit ( http://scikit-learn.org/ ) - A toolbox with several machine learning algorithms, including neural networks.
- Tensorflow ( https://www.tensorflow.org/ ) - Google's framework. A lot of documentation and support. Several tutorials and large community.
- Pytorch ( http://pytorch.org/ ) - It introduces the idea of dynamic graphs for gpu computing which speeds ups the training and testing in some deep neural network models. It also has great support for the community with lot of examples and tutorials around.
- Theano ( http://deeplearning.net/software/theano/ ) - One of the first before caffe, tensorflow and pytorch gain popularity. Only did some tests and opted for tensorflow at the time.
- CNTK ( https://www.microsoft.com/en-us/cognitive-toolkit/ ) Microsoft's framework, provides bindings for python, c++ c# and Branscript (a language for CNTK)
- Keras ( https://keras.io/ ) - Keras is a high level framework, which can have other frameworks has backend (tensorflow, cntk, theano) . It has a simple code interface which allows quick prototyping and testing.
NEST is very well established, supports multi-threading. Brian is pretty easy and intuitive and supports auditory processing.
I can also recommend using PyNN, which is a kind of meta-language in which you describe neural networks and later on you decide whether this network should run in Neuron, NEST, PCSim or Brian.