TensofFlow
TensorFlow是相对高阶的机器学习库,用户可以方便地用它设计神经网络结构,而不必为了追求高效率的实现亲自写C++或CUDA代码。灵活的移植性,对不同平台PC、IOS、Android、Servering都提供支持。
Caffe
Caffe设计时的目标只针对于图像,没有考虑文本、语音或者时间序列的数据,因此Caffe对卷积神经网络的支持非常好,但对时间序列RNN、LSTM等支持得不是特别充分。在计算机视觉领域Caffe应用尤其多,可以用来做人脸识别、图片分类、位置检测、目标追踪等。Caffe在GPU上训练的性能很好(使用单块GTX 1080训练AlexNet时一天可以训练上百万张图片),但是目前仅支持单机多GPU的训练,没有原生支持分布式的训练。庆幸的是,现在有很多第三方的支持,比如雅虎开源的CaffeOnSpark,可以借助Spark的分布式框架实现Caffe的大规模分布式训练。
Torch
Torch给自己的定位是LuaJIT上的一个高效的科学计算库,支持大量的机器学习算法,同时以GPU上的计算优先。Torch的目标是让设计科学计算算法变得便捷,它包含了大量的机器学习、计算机视觉、信号处理、并行运算、图像、视频、音频、网络处理的库,同时和Caffe类似,Torch拥有大量的训练好的深度学习模型。
Keras
Keras是一个崇尚极简、高度模块化的神经网络库,使用Python实现,并可以同时运行在TensorFlow和Theano上。它旨在让用户进行最快速的原型实验,让想法变为结果的这个过程最短。Keras最大的问题可能是目前无法直接使用多GPU,所以对大规模的数据处理速度没有其他支持多GPU和分布式的框架快。
MXNet
MXNet是DMLC(Distributed Machine Learning Community)开发的一款开源的、轻量级、可移植的、灵活的深度学习库,它让用户可以混合使用符号编程模式和指令式编程模式来最大化效率和灵活性。是各个框架中率先支持多GPU和分布式的,同时其分布式性能也非常高。
CNTK
CNTK(Computational Network Toolkit)是微软研究院(MSR)开源的深度学习框架。已经发展成一个通用的、跨平台的深度学习系统,在语音识别领域的使用尤其广泛。PC上支持Linux、Mac和Windows,但是它目前不支持ARM架构,限制了其在移动设备上的发挥。
各框架比较
框架 | 机构 | 支持语言 | 特点 |
---|---|---|---|
Tensorflow | Python/C++/Go… | 1.功能齐全 2.移植性好 3.文档齐全,但乱 | |
Caffe | BVLC | C++/Python | 1.图像领域出众 2.灵活性一般 3.社区强大 4.文档全,学习资料多 |
Torch | Facebool | Lua | 1.支持动态图 2.结构简单 3.手动实现梯度求解 |
Keras | fchollet | Python | 1.文档齐全 2.上手简单 3.速度慢,需要GPU |
MXNet | DMLC | Python/C++/R… | 1.计算图优化好 2.节约内存 3.高度灵活 4.CNN、RNN情感分析出众 |
CNTK | Microsoft | C++ | 1.语音识别领域出众 2.性能优异,节约内存 |
资料来源:
1.) 主流深度学习框架对比.
2.) 深度学习 框架比较.