版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
各种深度学习框架优缺点
常见的深度学习框架
-
Theano
2008年开始开发,是第一个有较大影响力的python深度学习框架,但是现在已经停止开发。
-
TensorFlow
2015年11月由Google推出的全新的机器学习开源工具。Tensorflow在很大程度上可以看作Theano的后继者,不仅因为有很大一批相同的开发者,也有相近的设计理念。都是基于计算图的实现自动微分系统。TensorFlow 使用数据流图进行数值计算,图中的节点代表数学运算,而图中的边则代表在这些节点之间传递的多维数组。
缺点:
- 过于复杂的系统设计
- 频繁变动的接口
- 接口设计过于晦涩难懂
- 文档混乱
但是是最流行的深度学习框架,社区强大,适合生产环境。
-
Keras
是一个高层神经网络API,由纯Python编写而成并使用Tensorflow、Theano及CNTK作为后端。Keras并不能称为一个深度学习框架,它更像一个深度学习接口,构建于第三方框架之上。为支持快速实验而生,入门简单,可以极大的减少工作量。
缺点:
- 不够灵活,使用受限
-
Caffe/Caffe2
文档不够完善,但是性能优异,几乎全平台支持,适合生产环境
-
MXNet
开发者李沐,分布式强大、语言支持多,适合AWS云平台使用,但是文档混乱。
-
CNTK
微软的深度学习框架,但是社区不够活跃,擅长语音方面的研究
-
Pytorch
基于动态图。几乎所有的框架都是基于计算图的,而计算图可以分为静态计算图和动态计算图。静态计算图是先定义再运行(define and run),一次定义多次运行。而动态计算图是在运行中被定义的,在运行时构建(define by run),可以多次构建多次运行。Tensorflow是基于静态计算图,而pytorch是基于动态计算图。
pytorch的优点:
- 设计简洁,tensor->autograd->nn.Module,不像tensorflow中各种session,namesapce等概念。
- 速度快
- Pytorch继承了torch的优点,符合人们的思考方式,易用
- 社区活跃