Difference between revisions of "Neural net software notes"
From Helpful
m |
m |
||
Line 15: | Line 15: | ||
* if looking to experiment, probably look at keras instead | * if looking to experiment, probably look at keras instead | ||
* GPU: CUDA | * GPU: CUDA | ||
+ | * CPU: yes | ||
Tensorflow | Tensorflow | ||
Line 21: | Line 22: | ||
* varying frontends | * varying frontends | ||
* GPU: CUDA | * GPU: CUDA | ||
+ | * CPU: yes | ||
* multi-node: yes | * multi-node: yes | ||
Line 28: | Line 30: | ||
* not always tweakable | * not always tweakable | ||
* GPU: yes (see backends; CUDA) | * GPU: yes (see backends; CUDA) | ||
+ | * CPU: yes | ||
* usable as API/frontend to TensorFlow, Theano, CNTK | * usable as API/frontend to TensorFlow, Theano, CNTK | ||
* creator/backer: google | * creator/backer: google | ||
Line 38: | Line 41: | ||
* can be annoying to compile/install | * can be annoying to compile/install | ||
* GPU: yes, but a little work | * GPU: yes, but a little work | ||
+ | * CPU: yes | ||
* multi-node: yes (MPI) | * multi-node: yes (MPI) | ||
* C++ | * C++ | ||
Line 48: | Line 52: | ||
Torch | Torch | ||
* itself C, with lua wrapper | * itself C, with lua wrapper | ||
+ | * CPU: yes{{verify}} | ||
Pytorch wraps the torch binaries with python wrapper (and also something of a successor{{verify}}) | Pytorch wraps the torch binaries with python wrapper (and also something of a successor{{verify}}) | ||
Line 53: | Line 58: | ||
* caffe2 is merging into pytorch | * caffe2 is merging into pytorch | ||
+ | |||
+ | darknet | ||
+ | * GPU: CUDA | ||
+ | * CPU: yes | ||
Line 58: | Line 67: | ||
* creator/backer: microsoft | * creator/backer: microsoft | ||
* GPU: CUDA | * GPU: CUDA | ||
− | + | * CPU: yes | |
MXNet | MXNet | ||
* creator/backer: Microsoft/Amazon | * creator/backer: Microsoft/Amazon | ||
* language/wrapper: R, C, python, Js | * language/wrapper: R, C, python, Js | ||
+ | * GPU: CUDA | ||
+ | * CPU: yes | ||
Chainer | Chainer | ||
Line 69: | Line 80: | ||
* easy an fast, apparently | * easy an fast, apparently | ||
* GPU: CUDA | * GPU: CUDA | ||
+ | * CPU: yes | ||
* smaller community | * smaller community | ||
Line 75: | Line 87: | ||
* smaller community, though | * smaller community, though | ||
* GPU: yes | * GPU: yes | ||
+ | * CPU: yes | ||
* scaling: yes | * scaling: yes | ||
Static versus dynamic graphs: | Static versus dynamic graphs: | ||
− | + | : Static means you have to define the graph before you run it, which is perfectly good for pre-set jobs, and sometimes faster. | |
− | Static means you have to define the graph before you run it, which is good for pre-set jobs | + | : Dynamic means it can change during execution, which can be more powerful for e.g. unstructured data and RNNs - while they're not necessary for e.g. most image / CNN work. |
− | + | ||
− | Dynamic means it can change during execution, which can be more powerful for e.g. unstructured data and RNNs - while they're not necessary for most image / CNN work. | + | |
− | + | ||
− | + | ||