I'd like to be independent of commercial software for my scientific work. I find a dependence an commercial packages such as Matlab and its toolboxes unsatisfactory, because I do not know if I will have access to Matlab in the future, and because I don't like the language. Therefore, I'm looking for alternatives.

Fortunately, I'm quite fluent in Python (and I love the language), and with NumPy, SciPy, Matplotlib, Basemap, and NetCDF reading and writing routines, it satisfies most of my needs. Most — I still return to Matlab when I need to train satellite retrievals using feed-forward multi-layer perceptrons, e.g. te use Artificial Neural Networks.

As is not unusual with open-source software, there is more than one package that does neural networks. Considerably more than one:

  • A while ago I tried PyBrain, "the swiss army knife for neural networking", but I didn't succeed in getting any satisfactory results in a short time (both develop-time and run-time). Perhaps I didn't try hard enough, or perhaps it's not really geared toward my exact need.

  • Just now I discovered that there is a package called neurolab, which looks promising: a simple and powerful Neural Network Library for Python, with an API like Neural Network Toolbox (NNT) from MATLAB.

  • There is FFnet, a fast and easy-to-use feed-forward neural network training solution for python

  • There is simplenn

  • There is Peach, a library for computational intelligence and machine learning

  • There are Python bindings to FANN, the Fast Artificial Neural Network library, described as a de facto standard in this StackOverflow post.

  • There are probably others.

Has anyone gone through the effort of intercomparing the different options, based on criteria such as easy of use, speed, etc.? My own use case is satellite retrievals, e.g. fitting a strongly non-linear function of many variables. I am very much a user of neural nets; I am not interested in researching their inner workings.

This question on Stats.SE is related, but with a different focus.

  • $\begingroup$ Your question is very interesting, but I think you're asking for too much. A comprehensive evaluation of different neural network softwares in python is too broad to be answered on this forum. It may be helpful to narrow the focus of your question to a particular criterion and software of interest to you. $\endgroup$
    – Paul
    Commented Jan 13, 2014 at 14:41
  • $\begingroup$ Furthermore, we cannot migrate your question as it is now too old. If you feel that another SE site is more suitable for your question, you'll have to delete this one and repost it on the other site. Even if you repost the question, I still feel that its in your best interest to narrow the scope of your question to increase the likelihood of obtaining a good answer. $\endgroup$
    – Paul
    Commented Jan 13, 2014 at 14:45
  • $\begingroup$ Not Python, but currently I'm using caffe for neural network. Mostly for convolutional neural network, but it is even easier to setup a conventional NN. $\endgroup$
    – Siyuan Ren
    Commented Aug 9, 2014 at 3:32
  • $\begingroup$ Cross-site duplicate: datascience.stackexchange.com/q/694/6 $\endgroup$
    – gerrit
    Commented Jul 17, 2017 at 23:34

3 Answers 3


Did you check out scikit-learn? It's totally not my domain but I have heard some very positive user experiences...

  • $\begingroup$ Would fall in the category There are probably others — adding yet another library to the list doesn't solve my problem, but rather extends the scope of an intercomparison I'd hope to see... $\endgroup$
    – gerrit
    Commented Jan 25, 2013 at 15:47
  • $\begingroup$ Well, from what I heard and read, the advantage of scikit-learn is that it's a framework containing a multitude of methods. Maybe that will ease your work when you do an intercomparison of methods applied to your problem. $\endgroup$
    – GertVdE
    Commented Jan 26, 2013 at 12:20
  • 3
    $\begingroup$ scikit-learn doesn't contain neural network methods, the artifical neural network model was removed in 0.12, and they recommended at the time that users who needed that functionality switch to PyBrain. $\endgroup$ Commented Jan 28, 2013 at 18:45

Have you looked at Theano? it seems quite powerful.

  • 1
    $\begingroup$ Indeed, Theano is very powerful. But it's compiler (or framework) that allows one to write python code which then gets compiled and executed on GPU. Theano can be used to implement NNs, but it's not a ML library. $\endgroup$ Commented May 4, 2014 at 13:38

I too came from using neural netowrks in Matlab to Python. One of the most powerful libraries in Python is "Pylearn2" http://deeplearning.net/software/pylearn2/. Currently, this is the most active library and has many different features to experiment with. It is based on Theano and as such is fast and can be made run on GPU's. Unfortunately, this is its disadvantage too: the API is constantly changing, and has a high learning curve. You have to configure your neural netowrks using YAML files too. I have had more success using PyBrain for creating basic neural networks. I needed a solution to a regression problem, where I had to forecast the load on a power station based on weather factors. The guide here: http://fastml.com/pybrain-a-simple-neural-networks-library-in-python/ gave me 90% of the solution that i needed.

One issue I found with PyBrain was speed. It is written natively in Python. I have found the training of a neural network to be ~50x slower than Matlab. Some others have found success with speeding up the training process of PyBrain with the arac library.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.