This is currently a work in progress!
- Do you not know what a neural network is? Use scikit-learn.
- Do you want to use only the tried and tested elements of deep learning? Use Caffe.
- Do you want to create novel architectures? Use Lasagne.
- Do you want to create novel architectures that are inelegant to do in Lasagne? Use Lasagne.
- Have you created these novel architectures that are inelegent to do in Lasagne? If you can live with it, keep using Lasagne.
- Are they inelegent because they are recurrent? Try blocks.
- Still not satisfied? Maybe this is a good fit. (:
- required
- numpy
- theano
- networkx
- six
- toolz
- optional
- lasagne (recommended - for conv/pooling layers)
- pydot
- pygraphviz
- scikit-learn (for the examples)
- nose
- sniffer
- optional, to auto-run nosetests
- DAGano doesn’t have the same ring to it
- architectures are constructed as immutable trees, and this allows you to customize the behavior of subtrees instead of manipulating a single global network
- principle of locality: it’s more likely that you’ll want close-by nodes to behave similarly - thus having subnetworks makes sense
- immutability is a good means of managing complexity - thus a tree makes sense