Skip to content

Machine Learning library comparisons for testing brain architectures

Aditya Gilra edited this page Feb 16, 2017 · 15 revisions

There are already nice deep-learning/ML software comparisons out there:

  1. https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software
  2. Comparative Study of Deep Learning Software Frameworks, https://arxiv.org/abs/1511.06435
    Outdated, but as of v3 Mar 2016, Theano was the most extensible, Torch was fastest, while Tensorflow was extensible and best for multi-GPUs, but not as fast as the others. [Given this, Keras seems a good choice as it supports both Theano and Tensorflow backends, supports fast prototyping, is modular, and claims to be easily extensible and suitable for advanced research.]
  3. http://www.pcquest.com/15-top-open-source-artificial-intelligence-tools/ Magazine style brief write-ups about 15 frameworks.
  4. http://deeplearning.net/software_links/ List of deep learning frameworks.
  5. https://github.com/josephmisiti/awesome-machine-learning
    Curated list of broader machine learning frameworks, not just deep learning.

Here, we compare free deep-learning/ML and bio-realistic libraries/frameworks for suitability of use in archibrain.
Particularly, we want
0. python / julia support

  1. arbitrary neurons (GRU, LSTM, spiking, reLU)
  2. auto-differentiation of arbitrary functions
  3. ease of implementing different learning algos (not just backprop) - typically bio-realistic simulators only allow synaptically-local and online learning rules, while ML/deep-learning frameworks do backprop over multiple layers.
  4. can use GPUs (and CPUs) across multiple nodes (openmp/cuda/opencl/multi-node?).
  5. ease of implementing both RL and supervised learning tasks.
library py/ju? arb nrns? auto-diff? arb learn algo? multi-node GPU/CPU tasks
tensorflow py ? yes ? cuda,multi-node ?
mxnet py/ju ? yes ? openmp,cuda,multi-node ?
scikit-learn
theano py ? yes ? openmp,cuda,(dev-opencl),multi-node ?
keras py ? yes ? theano-backend,multi-node ?
torch no (lua)
cntk py ? yes ? openmp,cuda,multi-node ?
caffe py ? ? ? cuda,... no
brian py yes no only local,online ? no
nengo py lif,lifrate, hack others no PES,etc, hack other local,online opencl,not multi-node no
numenta/nupic
paddlepaddle

For the moment, let's go with keras and update the above table as we learn/play more, while following an agile software development process.

Clone this wiki locally