参考:https://www.zhihu.com/question/52668301
推荐:https://www.jianshu.com/p/39561bdeac0d
一、TensorFlow:
TensorFlow的模型是程序员用“一种语言”(很可能是Python!)来表达。
所以说,我们再说一下这个问题:为什么TensorFlow选择Python作为表达和控制模型训练而且支持的非常好的语言?
答案很简单:Python可能是大量数据科学家和机器学习专家用的最舒适的语言,也是易于集成和控制C ++后端的语言,同时也是广泛使用与谷歌的公司内外和他们的开源产品。 鉴于使用TensorFlow的基本模型,Python的性能并不重要,这是一个很自然的契合。 NumPy也是一个巨大的加分,它可以很容易地在Python中进行预处理(也是高性能),然后将它们提供给TensorFlow,以获得真正CPU-heavy的东西。
二、Caffe(卷积神经网络框架,Convolutional Architecture for Fast Feature Embedding)
caffe是一个清晰,可读性高,快速的深度学习框架。作者是贾扬清,加州大学伯克利的ph.D,现就职于Facebook。
Caffe的全称应该是Convolutional Architecture for Fast Feature Embedding,它是一个清晰、高效的深度学习框架,它是开源的,核心语言是C++,它支持命令行、Python和Matlab接口,它既可以在CPU上运行也可以在GPU上运行。它的license是BSD 2-Clause。
Deep Learning比较流行的一个原因,主要是因为它能够自主地从数据上学到有用的feature。特别是对于一些不知道如何设计feature的场合,比如说图像和speech。
Caffe的设计:基本上,Caffe follow了神经网络的一个简单假设----所有的计算都是以layer的形式表示的,layer做的事情就是take一些数据,然后输出一些计算以后的结果,比如说卷积,就是输入一个图像,然后和这一层的参数(filter)做卷积,然后输出卷积的结果。
三、MXNet
亚马逊将MXNet指定为官方深度学习平台
目前支持以下的语言:
python
R
C++
Julia
Scala
比较项 | Caffe | Torch | Theano | TensorFlow | MXNet |
主语言 | C++/cuda | C++/Lua/cuda | Python/c++/cuda | C++/cuda | C++/cuda |
从语言 | Python/Matlab | - | - | Python | Python/R/Julia/Go |
硬件 | CPU/GPU | CPU/GPU/FPGA | CPU/GPU | CPU/GPU/Mobile | CPU/GPU/Mobile |
分布式 | N | N | N | Y(未开源) | Y |
速度 | 快 | 快 | 中等 | 中等 | 快 |
灵活性 | 一般 | 好 | 好 | 好 | 好 |
文档 | 全面 | 全面 | 中等 | 中等 | 全面 |
适合模型 | CNN | CNN/RNN | CNN/RNN | CNN/RNN | CNN/RNN? |
操作系统 | 所有系统 | Linux, OSX | 所有系统 | Linux, OSX | 所有系统 |
命令式 | N | Y | N | N | Y |
声明式 | Y | N | Y | Y | Y |
接口 | protobuf | Lua | Python | C++/Python | Python/R/Julia/Go |
网络结构 | 分层方法 | 分层方法 | 符号张量图 | 符号张量图 | ? |