社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

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

深度学习与神经网络 • 7 年前 • 787 次点击  

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。Yoshua Bengio 在 2017 年 9 月 28 日宣布,Theano 的开发将终止。因此实际上 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%



温馨提示:

在本公众号后台回复"教程",即可以看到最新的TensorFlow 和 Keras学习教程。



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


若喜欢“深度学习与神经网络”推送的文章,请扫描下方二维码关注公众号!


您好,欢迎关注深度学习与神经网络。本公众号会定期推送深度学习的教程以及人工智能最新发展情况。感谢大家的支持!
回复“教程”可以看到最新的深度学习教程。
回复“ 加群”可以加入深度学习交流群。
投稿或合作请加微信:sdxxqbf


若喜欢,给个赞呗~


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/VIgjsmnvlq
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/12527
 
787 次点击