对比主流深度学习框架
对比主流深度学习框架
文章目录
现在的主要的框架主要是呈以上的排名分部
一、有什么框架:
TensorFlow、Theano、Keras、Lasagne、Caffe、DSSTNE、Torch、MXNet、DL4J、Cognitive Toolkit主要是有以上这十种框架。
二、各个框架的不同点
1、TensorFlow
是一个基于数据流编程(dataflow programming)的符号数学系统,被广泛应用于各类机器学习(machine learning)算法的编程实现,其前身是谷歌的神经网络算法库DistBelief。
TensorFlow是一个相对高阶的机器学习库,用户可以很方便快捷地使用TensorFlow进行设计神经网络接构,而不用再去亲自编写代码。同时它跟Theano一样支持自动求导用户不用再进行反向传播计算求解梯度(Python则会比较消耗资源,并且执行效率不高)。
除了支持常见的网络结构[卷积神经网络(Convolutional Neural Network,CNN)、循环神经网络(Recurent Neural Network,RNN)]外,TensorFlow还支持深度强化学习乃至其他计算密集的科学计算(如偏微分方程求解等)。
2、Caffe
Caffe是纯粹的C++/CUDA架构,支持命令行、Python和MATLAB接口;可以在CPU和GPU直接无缝切换。
Caffe的优势:
上手快:模型与相应优化都是以文本形式而非代码形式给出。Caffe给出了模型的定义、最优化设置以及预训练的权重,方便立即上手。
速度快:能够运行最棒的模型与海量的数据。Caffe与cuDNN结合使用,测试AlexNet模型,在K40上处理每张图片只需要1.17ms.
模块化:方便扩展到新的任务和设置上。可以使用Caffe提供的各层类型来定义自己的模型。
开放性:公开的代码和参考模型用于再现。
社区好:可以通过BSD-2参与开发与讨论。
3、Keras
Keras是一个用Python编写的高级神经网络API(Application Programming Interface,应用程序编程接口),它能够以TensorFlow、CNTK、Theano作为后端运行。如果需要以下需求可以使用Kears:
- 允许简单而快速的原型设计(由于用户友好,高度模块化,可扩展性)。
- 同时支持卷积神经网络和循环神经网络,以及两者的组合。
- 在 CPU 和 GPU 上无缝运行。
三、总结
如果要进入这一领域,应该首先学习 Python。尽管这一领域还支持其它很多语言,但 Python 是应用范围最广而且最简单的一个。而且Python的开发速度相对其他语言来讲较快。
我的建议是,如果你是初学者,使用 Keras,如果不是初学者,也可以使用它。如果你参加过 Kaggle 比赛,你肯定注意到了 Kaggle 的两大巨星:Keras 和 XGBoost。