DL:主流深度学习框架多个方向PK比较——Jason niu

Theano、TensorFlow、Torch、Caffe、MXNet、Neon 和 CNTK

主流深度框架总结

如果一个以 Python 为中心的团队想开发图像识别的应用程序,你应该使用 TensorFlow,因为它有丰富的资源,较好性能和完整的原型工具。如果一个有 Lua 能力的团队希望将 RNN 大规模应用到生产环境中去,他们则会受益于 Torch 的高速和强大的 RNN 建模能力。

综合评价

1CNNTheanoCaffe MXNet 都有很好的 CNN 建模能力。其中,TensorFlow 因为易于建立的 Inception V3 模型,Torch 因为其丰富的 CNN 资源——包括易于使用的时间卷积集使得这两种框架在 CNN 建模能力上脱颖而出。TheanoCaffe MXNet 都有很好的 CNN 建模能

2、RNNCaffe 上的 RNN 资源最少,而 Microsoft CNTK Torch 有丰富的 RNN 教程和预构建模型。

3、架构:TensorFlowTorch MXNet 都有直观而模块化的架构,让开发相对变得简单。相比之下,我们在 Caffe 这样的框架上需要进行大量的工作才能创建一个新层。另外我们发现在开发过程中,因为有 TensorBoard web GUI 等应用的存在,TensorFlow 极易在训练中和训练后进行 debug 和监控。

4速度:微软声称他们的 CNTK 在一些 RNN 训练任务中有最快的速度。  在另一项对比 TheanoTorch TensorFlow RNN 性能的研究中,Theano 是其中最快的。

DL框架

简介

优缺点

Keras

Keras是一个崇尚极简、高度模块化的神经网络库,使用Python实现,并可以同时运行在TensorFlowTheano上。它旨在让用户进行最快速的原型实验,让想法变为结果的这个过程最短。TheanoTensorFlow的计算图支持更通用的计算,而Keras则专精于深度学习。TheanoTensorFlow更像是深度学习领域的NumPy,而Keras则是这个领域的Scikit-learn。它提供了目前为止最方便的API

 

Tesorflow

TensorFlow是相对高阶的机器学习库,用户可以方便地用它设计神经网络结构,而不必为了追求高效率的实现亲自写C++CUDA代码。它和Theano一样都支持自动求导,用户不需要再通过反向传播求解梯度。

TensorFlow 因为易于建立的 Inception V3 模型

TensorFlow有官方的C++PythonGo、Java接口

1TensorFlow除了常见的CNNRNN,也适合其他机器学习算法。不只局限于神经网络,其数据流式图支持非常自由的算法表达,当然也可以轻松实现深度学习以外的机器学习算法。

2TensorFlow灵活的移植性。可将同一份代码几乎不经过修改就轻松地部署到有任意数量CPUGPUPC、服务器或者移动设备上。支持IntelAMDCPU,通过CUDA支持NVIDIAGPU,支持LinuxMacWindows,能够基于ARM架构编译和优化,如在移动设备(AndroidiOS)上。

3、相比于TheanoTensorFlow还有一个优势就是它极快的编译速度。在定义新网络结构时,Theano通常需要长时间的编译,因此尝试新模型需要比较大的代价,而TensorFlow完全没有这个问题。

4TensorFlow功能强大的可视化组件TensorBoard。能可视化网络结构和训练过程,对于观察复杂的网络结构和监控长时间、大规模的训练很有帮助。是TensorFlow的一组Web应用,用来监控TensorFlow运行过程,或可视化ComputationGraphTensorBoard目前支持5种可视化:标量(scalars)、图片(images)、音频(audio)、直方图(histograms)和计算图(ComputationGraph)。

A TensorFlow的一个薄弱地方可能在于计算图必须构建为静态图,这让很多计算变得难以实现,尤其是序列预测中经常使用的beamsearch

Caffe

Caffe全称为Convolutional Architecture for Fast Feature Embedding,由伯克利视觉学中心(Berkeley Vision and Learning CenterBVLC)进行维护。Caffe的创始人是加州大学伯克利的Ph.D.贾扬清,他同时也是TensorFlow的作者之一,曾工作于MSRANECGoogle Brain,目前就职于Facebook FAIR实验室。

在计算机视觉领域Caffe应用尤其多,可以用来做人脸识别、图片分类、位置检测、目标追踪等。虽然Caffe主要是面向学术圈和研究者的,但它的程序运行非常稳定,代码质量比较高,所以也很适合对稳定性要求严格的生产环境,可以算是第一个主流的工业级深度学习框架。

1Caffe的核心概念是Layer,每一个神经网络的模块都是一个LayerLayer接收输入数据,同时经过内部计算产生输出数据。

2Caffe的一大优势是拥有大量的训练好的经典模型(AlexNetVGGInception)乃至其他state-of-the-artResNet等)的模型,收藏在它的ModelZoo

3Caffe的底层是基于C++的,因此可以在各种硬件环境编译并具有良好的移植性,支持LinuxMacWindows系统,也可以编译部署到移动设备系统如AndroidiOS上。和其他主流深度学习库类似,Caffe也提供了Python语言接口pycaffe,在接触新任务,设计新网络时可以使用其Python接口简化操作。

A Caffe最开始设计时的目标只针对于图像,没有考虑文本、语音或者时间序列的数据,因此Caffe对卷积神经网络的支持非常好,但对时间序列RNNLSTM等支持得不是特别充分。同时,基于Layer的模式也对RNN不是非常友好,定义RNN结构时比较麻烦。在模型结构非常复杂时,可能需要写非常冗长的配置文件才能设计好网络,而且阅读时也比较费力。

Torch

支持Lua语言编程,Torch 因为其丰富的 CNN 资源——包括易于使用的时间卷积集使得这两种框架在 CNN 建模能力上脱颖而出。

Torch给自己的定位是LuaJIT上的一个高效的科学计算库,支持大量的机器学习算法,同时以GPU上的计算优先。Torch的历史非常悠久,但真正得到发扬光大是在Facebook开源了其深度学习的组件之后,此后包括GoogleTwitterNYUIDIAPPurdue等组织都大量使用TorchTorch的目标是让设计科学计算算法变得便捷,它包含了大量的机器学习、计算机视觉、信号处理、并行运算、图像、视频、音频、网络处理的库,同时和Caffe类似,Torch拥有大量的训练好的深度学习模型。它可以支持设计非常复杂的神经网络的拓扑图结构,再并行化到CPUGPU上,在Torch上设计新的Layer是相对简单的。它和TensorFlow一样使用了底层C++加上层脚本语言调用的方式,只不过Torch使用的是Lua

Theano

蒙特利尔大学Lisa Lab团队开发的TheanoTheano就是深度学习界的NumPy,是其他各类Python深度学习库的基石。Theano的核心是一个数学表达式的编译器,专门为处理大规模神经网络训练的计算而设计。它可以将用户定义的各种计算编译为高效的底层代码,并链接各种可以加速的库,比如BLASCUDA等。

Theano是一个Python库,专门用于定义、优化、求值数学表达式,效率高,适用于多维数组。特别适合做机器学习。一般来说,使用时需要安装pythonnumpy。持大部分先进的网络,现在的很多研究想法都来源于Theano,它引领了符号图在编程网络中使用的趋势。Theano的符号API支持循环控制,让RNN的实现更加容易且高效。

A 虽然Theano支持LinuxMacWindows,但是没有底层C++的接口,因此模型的部署非常不方便,依赖于各种Python库,并且不支持各种移动设备,所以几乎没有在工业生产环境的应用。

CNTK

微软的 CNTK

MXNet

具有丰富的语言支持,MXNet 有着最好的多 GPU 优化引擎。

Deeplearning4j

Neon

PaddlePaddle

百度深度学习平台PaddlePaddle—是并行分布式全功能深度学习框架,易学易用,高效灵活.支持海量图像识别分类,机器翻译和自动驾驶等多个领域的业务。

参考文献:
主流深度学习框架对比

猜你喜欢

转载自blog.csdn.net/qq_41185868/article/details/80299479