背景:在学习深度学习的时候,往往需要做的一个决策是:现在深度学习框架这么多,我应该使用哪种?选取一件趁手的兵器,总是西天取经的第一步。
Who the Super Star?
-
Tensorflow
- Github star: 104K
- Github fork: 65,022
- Language: C++
- API Language: Python/Java/C++/Go/JavaScript/Swift
- Author: Google
- Community: 38K Repos
- Companies using TF: https://www.tensorflow.org/
-
Keras
- Github star: 31.3K
- Github fork: 11,712
- Language: Python (Based on Tensorflow, Theano or CNTK)
- API Language: Python/R/
- Author: François Chollet (From Google)
- Community: 12K Repos
-
Caffe
- Github star: 24.7K
- Github fork: 15,159
- Language: C++
- API Language: C++/Python/Matlab
- Author: Yangqing Jia (From Google/UC Berkeley)
- Community: 5K Repos
-
Pytorch
- Github star: 16.9K
- Github fork: 3,894
- Language: C++ (Based on Torch)
- API Language: Python
- Author: Facebook
- Community: 8K Repos
-
Theano
- Github star: 8.3K
- Github fork: 2,450
- Language: Python
- API Language: Python
- Author: Université de Montréal
- Community: 2K Repos
-
Paddle
- Github star: 7.2K
- Github fork: 1,966
- Language: C++
- API Language: Python/C++
- Author: Baidu
- Community: 1K Repos
结论:
- 流行度评比:从上面的数据可以看到,Tensorflow和基于Tensorflow/Theano/CHTK的Keras的受欢迎流行度是属于Super Star级别的。
-
框架选择:
Tensorflow作为底层框架首选,其他上层框架根据自身具体情况选择。-
Why Tensorflow
Tensorflow的流行度和社区活跃度都是最高的,同时因为活跃上层框架Keras也有基于Tensorflow的实现,Tensorflow的流行决定了Tensorflow的框架完善性和进化能力都是有底层保障的。同时,由于Tensorflow背后有Google大佬的支持,所以工业界工程的实现都是有支持,也保证了Tensorflow的长久完善维护,不至于出现因为作者不更新维护导致整个框架被主流抛弃的顾虑。 -
Others?
在其他框架中,需要考虑到的因素包括:1. 框架背后的公司支持和社区热度,不至于不再维护导致巨大的机会成本;2. 对于具体任务不同框架的优劣势;3. 不同框架开源项目的多少;个人对于框架的喜好,对于框架语言的适应性。以上考虑因素的主要目的是综合考虑目标框架的长期可持续发展,以及对于自身项目实现的高效便捷,根据自身的实际情况定制选取合适的框架。
-
Why Tensorflow