深度学习框架的优缺点介绍

Posted 深度学习与神经网络

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习框架的优缺点介绍相关的知识,希望对你有一定的参考价值。

Summary:Deep Learning Tools

翻译:Amusi

来源:easy-tensorflow


0. 前言

在本文中,我们将介绍和比较当前最流行的深度学习框架(包括 Caffe、Theano、PyTorch、TensorFlow 和 Keras),这将会帮助你为你的应用来选择最合适的框架。



1. Caffe:第一个主流产品级深度学习库,于 2014 年由 UC Berkeley 启动。


深度学习框架的优缺点介绍


优点:


  • 快速

  • 支持 GPU

  • 支持 Matlab 和 Python 接口


缺点:


  • 不灵活。在 Caffe 中,每个节点被当做一个层,因此如果你想要一种新的层类型,你需要定义完整的前向、后向和梯度更新过程。这些层是网络的构建模块,你需要在无穷无尽的列表中进行选择。(相反,在 TensorFlow 中,每个节点被当做一个张量运算例如矩阵相加、相乘或卷积。你可以轻易地定义一个层作为这些运算的组合。因此 TensorFlow 的构建模块更小巧,允许更灵活的模块化。)

  • 需要大量的非必要冗长代码。如果你希望同时支持 CPU 和 GPU,你需要为每一个实现额外的函数。你还需要使用普通的文本编辑器来定义你的模型。真令人头疼!几乎每个人都希望程序化地定义模型,因为这有利于不同组件之间的模块化。有趣的是,Caffe 的主要架构师现在在 TensorFlow 团队工作(PS:还有在Facebook团队工作)。

  • 专一性。仅定位在计算机视觉(但做得很不错)。

  • 不是以 Python 编写!如果你希望引入新的变动,你需要在 C++和 CUDA 上编程(对于更小的变动,你可以使用它的 Python 和 Matlab 接口)。

  • 糟糕的文档。

  • 安装比较困难!有大量的依赖包(如OpenCV、glog和gflags等)。

  • 只有少量种类的输入格式,仅有一种输出格式 HDF5(虽然你总是可以使用它的 Python/C++/Matlab 接口来运行,并从中得到输出数据)。

  • 不适用于构建循环网络(recurrent networks)。



2. Theano:由蒙特利尔大学研究团队构建。Theano 的顶层构建了数值开源深度库,包括 Keras、Lasagne 和 Blocks。。因此实际上 Theano 已死!


深度学习框架的优缺点介绍

优点:


  • 计算图很漂亮(可媲美 TensorFlow)

  • 为 CPU 和 GPU 都做了优化

  • 很好地适应数值优化任务

  • 高级封装(Keras、Lasagne)


缺点:


  • 原始的 Theano 只有比较低级的 API


import numpy
for _ in range(T):
   h = torch.matmul(W, h) + b


  • 大型模型可能需要很长的编译时间

  • 不支持多 GPU

  • 错误信息可能没有帮助(有时候令人懊恼)



3. Pytorch2017 年 1 月,Facebook 将 Python 版本的 Torch 库(用 Lua 编写)开源。

深度学习框架的优缺点介绍


优点:


  • 提供动态计算图(意味着图是在运行时生成的),允许你处理可变长度的输入和输出,例如,在使用 RNN 时非常有用。

  • 另一个例子是,在 PyTorch 中,可以使用标准 Python 语法编写 for 循环语句。

  • 大量预训练模型

  • 大量易于组合的模块化组件

  • 易于编写自己的图层类型,易于在 GPU 上运行

  • 「TensorBoard」缺少一些关键功能时,「Losswise」可以作为 Pytorch 的替代品


缺点:


  • 正式文档以外的参考资料/资源有限

  • 无商业支持



4. TensorFlow: 由较低级别的符号计算库(如 Theano)与较高级别的网络规范库(如 Blocks 和 Lasagne)组合而成。


深度学习框架的优缺点介绍


优点:


  • 由谷歌开发、维护,因此可以保障支持、开发的持续性。

  • 巨大、活跃的社区

  • 网络训练的低级、高级接口

  • 「TensorBoard」是一款强大的可视化套件,旨在跟踪网络拓扑和性能,使调试更加简单。

  • 用 Python 编写(尽管某些对性能有重要影响的部分是用 C++实现的),这是一种颇具可读性的开发语言

  • 支持多 GPU。因此可以在不同的计算机上自由运行代码,而不必停止或重新启动程序

  • 比基于 Theano 的选项更快的模型编译

  • 编译时间比 Theano 短

  • TensorFlow 不仅支持深度学习,还有支持强化学习和其他算法的工具。


缺点:


  • 计算图是纯 Python 的,因此速度较慢

  • 图构造是静态的,意味着图必须先被「编译」再运行



5. Keras:Keras 是一个更高级、对用户最友好的 API,具有可配置的后端,由 Google Brain 团队成员 Francis Chollet 编写和维护。



优点:


  • 提供高级 API 来构建深度学习模型,使其易于阅读和使用

  • 编写规范的文档

  • 大型、活跃的社区

  • 位于其他深度学习库(如 Theano、TensorFlow 和 MXNet,可配置)之上

  • 使用面向对象的设计,因此所有内容都被视为对象(如网络层、参数、优化器等)。所有模型参数都可以作为对象属性进行访问。


例如:


  • model.layers[3].output 将提供模型的第三层

  • model.layers[3].weights 是符号权重张量的列表


缺点:


  • 由于用途非常普遍,所以在性能方面比较欠缺

  • 与 TensorFlow 后端配合使用时会出现性能问题(因为并未针对其进行优化),但与 Theano 后端配合使用时效果良好

  • 不像 TensorFlow 或 PyTorch 那样灵活


【附件】深度学习工具排名:

  • Tensorflow, 29.9%

  • Keras, 22.2%

  • PyTorch, 6.4%

  • Theano, 4.9%

  • Other Deep Learning Tools, 4.9%

  • DeepLearning4J, 3.4%

  • Microsoft Cognitive Toolkit (Prev. CNTK), 3.0%

  • Apache MXnet, 1.5%

  • Caffe, 1.5%

  • Caffe2, 1.2%

  • TFLearn, 1.1%

  • Torch, 1.0%

  • Lasagne, 0.3%



温馨提示:



--------我是可爱的分割线--------




若喜欢,给个赞呗~

以上是关于深度学习框架的优缺点介绍的主要内容,如果未能解决你的问题,请参考以下文章

深度学习框架keras平台搭建(关键字:windows非GPU离线安装)

深度学习3. 常见深度学习框架简介

九大深度学习框架

深度学习框架的评估与比较

从框架优缺点说起,这是一份TensorFlow入门极简教程

从TensorFlow到PyTorch:九大深度学习框架哪款最适合你?