-
Notifications
You must be signed in to change notification settings - Fork 3
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:
- https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software
- 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.] - http://www.pcquest.com/15-top-open-source-artificial-intelligence-tools/ Magazine style brief write-ups about 15 frameworks.
- http://deeplearning.net/software_links/ List of deep learning frameworks.
-
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
- arbitrary neurons (GRU, LSTM, spiking, reLU)
- auto-differentiation of arbitrary functions
- 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.
- can use GPUs (and CPUs) across multiple nodes (openmp/cuda/opencl/multi-node?).
- 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.