作者:Pulkit Sharma

翻译:陈之炎

校对:丁楠雅

本文约3900字,建议阅读10+分钟。

本文为大家分析并比较五种非常有用的深度学习框架的优点及应用。

概述

从出道起,我就一直是一名程序员。我喜欢从头开始编写代码,这有助于我清楚地理解主题(或技巧)。当我们刚开始学习数据科学时,这种方法尤为有用。

尝试从无到有地实现一个神经网络,你将会明白很多有趣的事情。但是当需要为现实世界的数据集构建深度学习模型时,这还是一个不错的主意吗?如果你需要几天或几周的时间来建立起模型,这是完全不可能的。

对于那些无法访问无限计算资源的人来说,你们已经来到了正确的地方。

值得庆幸的是,我们现在已经有了易于使用的开源深度学习框架,旨在简化复杂和大规模深度学习模型的实现。使用这些神奇的框架,我们可以实现诸如卷积神经网络这样复杂的模型。

在本文中,将介绍5种非常有用的深度学习框架、它们的优点以及应用。我们将对每个框架进行比较,以了解何时何地可以使用它们。

我们还创建了一个非常酷的针对每个深度学习框架的信息图表,附在在文章的末尾,为每个数据科学家所必备。

目录

一、什么是深度学习框架?

二、TensorFlow

三、Keras

四、PyTorch

五、Caffe

六、Deeplearning4j

七、五个深度学习框架之间的对比

一、什么是深度学习框架?

让我们用一个例子来理解这个概念,来看以下图像集合:

在这个图像中有不同的分类:猫,骆驼,鹿,大象等。我们的任务是将这些图像归到相应的类(或类别)中。用Google搜索一下就能知道:卷积神经网络(CNNs)对于这类图像分类任务十分有效。

我们要做的工作就是实现这个模型,对吗?如果从头开始编写一个卷积神经网络,则需要几天(甚至几周)才能得到一个有效的模型,我们却没法等这么长的时间!

这正是深度学习框架真正改变了局面的地方。

深度学习框架是一种界面、库或工具,它使我们在无需深入了解底层算法的细节的情况下,能够更容易、更快速地构建深度学习模型。深度学习框架利用预先构建和优化好的组件集合定义模型,为模型的实现提供了一种清晰而简洁的方法。

利用恰当的框架来快速构建模型,而无需编写数百行代码,一个良好的深度学习框架具备以下关键特征:

  • 优化的性能

  • 易于理解和编码

  • 良好的社区支持

  • 并行化的进程,以减少计算

  • 自动计算梯度

这五点也是我用来挑选五大顶级深度学习框架的标准。下面让我们详细研究一下它们。

二、TensorFlow

TensorFlow是由谷歌大脑团队的研究人员和工程师开发的,它是深度学习领域中最常用的软件库(尽管其他软件正在迅速崛起)。

我喜欢TensorFlow的原因有两点:它完全是开源的,并且有出色的社区支持。TensorFlow为大多数复杂的深度学习模型预先编写好了代码,比如递归神经网络和卷积神经网络。

TensorFlow如此流行的最大原因之一是支持多种语言来创建深度学习模型,比如Python、C和R,并且有不错的文档和指南。

TensorFlow有许多组件,其中最为突出的是:

  • Tensorboard:帮助使用数据流图进行有效的数据可视化

  • TensorFlow:用于快速部署新算法/试验

TensorFlow的灵活架构使我们能够在一个或多个CPU(以及GPU)上部署深度学习模型。下面是一些典型的TensorFlow用例:

  • 基于文本的应用:语言检测、文本摘要

  • 图像识别:图像字幕、人脸识别、目标检测

  • 声音识别

  • 时间序列分析

  • 视频分析

用例远远不止这些,如果你知道TensorFlow还有以上所述之外的其他应用,我很乐意知道!可以在本文的评论部分告诉我,我们再做讨论。

安装TensorFlow也是一个非常简单的任务。

对于CPU:

pip install tensorflow

对于启用CUDA的GPU卡:

pip install tensorflow-gpu

通过以下综合教程了解如何使用TensorFlow建立神经网络模型:

  • 利用TensorFlow实现神经网络简介

https://www.analyticsvidhya.com/blog/2016/10/an-introduction-to-implementing-neural-networks-using-tensorflow/?utm_source=blog&utm_medium=comparison-deep-learning-framework

  • TensorFlow教程

https://www.tensorflow.org/tutorials

三、Keras

你习惯使用Python吗?如果是,那么可以立即连接到Keras。这是一个开启你的深度学习之旅的完美的框架。

Keras用Python编写,可以在TensorFlow(以及CNTK和Theano)之上运行。TensorFlow的接口具备挑战性,因为它是一个低级库,新用户可能会很难理解某些实现。

而Keras是一个高层的API,它为快速实验而开发。因此,如果希望获得快速结果,Keras会自动处理核心任务并生成输出。Keras支持卷积神经网络和递归神经网络,可以在CPU和GPU上无缝运行。

深度学习的初学者经常会抱怨:无法正确理解复杂的模型。如果你是这样的用户,Keras便是你的正确选择!它的目标是最小化用户操作,并使其模型真正容易理解。

可以将Keras中的模型大致分为两类:

1. 序列化


模型的层是按顺序定义的。这意味着当我们训练深度学习模型时,这些层次是按顺序实现的。下面是一个顺序模型的示例:

from keras.models import Sequential
from keras.layers import Dense

model = Sequential()
# we can add multiple layers to the model using .add()
model.add(Dense(units=64, activation='relu', input_dim=100))
model.add(Dense(units=10, activation='softmax'))

2. Keras 函数API

用于定义复杂模型,例如多输出模型或具有共享层的模型。请查看下面的代码来理解这一点:

from keras.layers import Input, Dense
from keras.models import Model

inputs = Input(shape=(100,)) # specify the input shape
x = Dense(64, activation='relu')(inputs)
predictions = Dense(10, activation='softmax')(x)

model = Model(inputs=inputs, outputs=predictions)

Keras有多种架构,如下所述,用于解决各种各样的问题,其中包括我的最爱之一:图像分类!

  • VGG 16

  • VGG 19

  • InceptionV 3

  • Mobilenet及更多

可以参考官方的Keras文档来详细了解框架是如何工作的。

Keras官方中文文档

https://keras.io/zh/​

仅需一行代码即可安装Keras:

pip install keras

对Keras感兴趣?可以继续学习以下教程,了解如何使用Keras实现神经网络:

  • 基于Keras的神经网络优化

https://www.analyticsvidhya.com/blog/2016/10/tutorial-optimizing-neural-networks-using-keras-with-image-recognition-case-study/?utm_source=blog&utm_medium=comparison-deep-learning-framework


四、PyTorch


还记得我们说过TensorFlow是目前最常用的深度学习框架吗?但是如果考虑到数据科学家和开发者们拥抱Facebook的PyTorch的速度,那它可能很快就要落伍了。

我是PyTorch的拥护者,在我所研究过的框架中,PyTorch最富灵活性。

PyTorch是Torch深度学习框架的一个接口,可用于建立深度神经网络和执行张量计算。Torch是一个基于Lua的框架,而PyTorch则运行在Python上。

PyTorch是一个Python包,它提供张量计算。张量是多维数组,就像numpy的ndarray一样,它也可以在GPU上运行。PyTorch使用动态计算图,PyTorch的Autograd软件包从张量生成计算图,并自动计算梯度。

与特定功能的预定义的图表不同,PyTorch提供了一个框架,用于在运行时构建计算图形,甚至在运行时也可以对这些图形进行更改。当不知道创建神经网络需要多少内存的情况下,这个功能便很有价值。

可以使用PyTorch处理各种来自深度学习的挑战,包括:

  • 影像(检测、分类等)

  • 文本(NLP)

  • 增强学习

想知道如何在机器上安装PyTorch,请稍等片刻。安装步骤取决于操作系统、需要安装的PyTorch包、正在使用的工具/语言、CUDA等其他一些因素。

根据此链接的内容检查PyTorch安装步骤,准备好框架之后,再检查以下两个资源,利用PyTorch构建第一个神经网络:

  • 学习如何使用PyTorch来构建快速和准确的神经网络-4个不错的案例研究

https://www.analyticsvidhya.com/blog/2019/01/guide-pytorch-neural-networks-case-studies/https://www.analyticsvidhya.com/blog/2019/01/guide-pytorch-neural-networks-case-studies/?utm_source=blog&utm_medium=comparison-deep-learning-framework

  • PyTorch教程

https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html


五、Caffe


CAFE是另一个面向图像处理领域的、比较流行的深度学习框架,它是由贾阳青(Yangqing Jia)在加利福尼亚伯克利大学读博士期间开发的。同样,它也是开源的!

首先,Caffe对递归网络和语言建模的支持不如上述三个框架。但是Caffe最突出的地方是它的处理速度和从图像中学习的速度。

Caffe可以每天处理超过六千万张图像,只需单个NVIDIA K40 GPU,其中 1毫秒/图像用于推理,4毫秒/图像用于学习。

它为C、Python、MATLAB等接口以及传统的命令行提供了坚实的支持。

通过Caffe Model Zoo框架可访问用于解决深度学习问题的预训练网络、模型和权重。这些模型可完成下述任务:

  • 简单的递归

  • 大规模视觉分类

  • 用于图像相似性的SiameSE网络

  • 语音和机器人应用

有关更多细节,您可以查看Caffe相关文档。

  • Caffe安装文档

http://caffe.berkeleyvision.org/installation.html

  • Caffe文档

http://caffe.berkeleyvision.org/


六、Deeplearning4j


我们社区中有Java程序员吗?这是你理想的深度学习框架!Deeplearning4j是用Java实现的,因此与Python相比效率更高。它使用称为ND4J的张量库,提供了处理n维数组(也称为张量)的能力。该框架还支持CPU和GPU。

Deeplearning4j将加载数据和训练算法的任务作为单独的过程处理,这种功能分离提供了很大的灵活性。谁都喜欢这样,尤其是在深度学习中!

Deeplearning4j也适用于不同的数据类型:

  • 图像

  • CSV

  • 纯文本等

可以使用Deeplearning4j构建的深度学习模型有:

  • 卷积神经网络(CNNs)

  • 递归神经网络(RNNs)

  • 长短时记忆(LSTM)等多种结构

阅读Deeplearning4j的安装步骤和文档,开始使用这个框架。

  • Deeplearning4j安装步骤

https://deeplearning4j.org/docs/latest/deeplearning4j-config-gpu-cpu

  • Deeplearning4j文档

https://deeplearning4j.org/docs/latest/deeplearning4j-quickstart

七、五种深度学习框架之间的对比


上面已经讨论了五个最流行的深度学习框架,每一个都独具特性,那么数据科学家会如何做出选择呢。

你决定用哪一种了吗?或者你打算换一个全新的框架?不管是什么情况,了解每个框架的优点和局限性非常重要。如果选对了正确的框架,当遇到错误时,便不会感到惊讶了!

某些框架在处理图像数据时工作得非常好,但无法解析文本数据;某些框架在处理图像和文本数据时,性能很好,但是它们的内部工作原理很难理解。

在本节中,将使用以下标准比较这五个深度学习框架:

  • 社区支持力度

  • 使用的语言

  • 接口

  • 对预训练的模型的支持

下表对这些框架进行了比较:

对于选择使用的框架来说,这是一个非常方便的对比表!

所有这些框架都是开源的,支持CUDA,并有预训练的模型。但是,应该如何正确开始,应该选择哪个框架来构建(初始)深度学习模型?让我们来做详细的讨论!

  • TensorFlow

我们先来说说TensortFlow。TensorFlow能处理图像以及基于序列的数据,如果你是深度学习的初学者,或者对线性代数和微积分等数学概念没有坚实的基础,那么TensortFlow的学习曲线将会令人畏惧地陡峭。

我完全理解,对于刚起步的人来说,这可能太复杂。但我建议你不断练习,不断探索社区,并继续阅读文章以掌握TensorFlow的诀窍。一旦对这个框架有了一个很好的理解,实现一个深度学习模型对你来说将是易如反掌。

  • Keras

Keras是一个非常坚实的框架,可以开启深度学习之旅。如果你熟悉Python,并且没有进行一些高级研究或开发某种特殊的神经网络,那么Keras适合你。

Keras的重点更多地放在取得成果上,而不是被模型的复杂之处所困扰。因此,如果有一个与图像分类或序列模型相关的项目,可以从Keras开始,很快便可以构建出一个工作模型。

Keras也集成在TensorFlow中,因此也可以使用tf.keras.构建模型。

  • Caffe

在图像数据上构建深度学习模型时,Caffe是不错的选择。但是,当谈到递归神经网络和语言模型时,Caffe落后于我们讨论过的其他框架。Caffe的主要优点是,即使没有强大的机器学习或微积分知识,也可以构建出深度学习模型。

Caffe主要用于建立和部署移动电话和其他计算受限平台的深度学习模型。

  • Deeplearning4j

正如之前所述,DeepleEarning4J是Java程序员的天堂。它为CNNS、RNN和LSTMS等不同的神经网络提供了大量的支持,它在不牺牲速度的情况下可以处理大量数据。听起来不错,有机会通过!

后记及图示信息图

除了文中提及的五种深度学习框架之外,你有没有其他的深度学习框架?很想听听你的想法和反馈。请在下面的评论部分与我联系。

记住,这些框架基本上只是帮助我们实现最终目标的工具,正确地选择它们可以减少大量的精力和时间。

最后附上资讯插图,详细介绍了我们所涵盖的每个深度学习框架。下载它,打印它,并在下次构建深度学习模型时使用它吧!

原文标题:

Top 5 Amazing Deep Learning Frameworks Every Data Scientist Must Know! (with Illustrated Infographic)

原文链接:

https://www.analyticsvidhya.com/blog/2019/03/deep-learning-frameworks-comparison/

译者简介

陈之炎,北京交通大学通信与控制工程专业毕业,获得工学硕士学位,历任长城计算机软件与系统公司工程师,大唐微电子公司工程师,现任北京吾译超群科技有限公司技术支持。目前从事智能化翻译教学系统的运营和维护,在人工智能深度学习和自然语言处理(NLP)方面积累有一定的经验。业余时间喜爱翻译创作,翻译作品主要有:IEC-ISO 7816、伊拉克石油工程项目、新财税主义宣言等等,其中中译英作品“新财税主义宣言”在GLOBAL TIMES正式发表。能够利用业余时间加入到THU 数据派平台的翻译志愿者小组,希望能和大家一起交流分享,共同进步

翻译组招募信息

工作内容:需要一颗细致的心,将选取好的外文文章翻译成流畅的中文。如果你是数据科学/统计学/计算机类的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友欢迎加入翻译小组。

你能得到:定期的翻译培训提高志愿者的翻译水平,提高对于数据科学前沿的认知,海外的朋友可以和国内技术应用发展保持联系,THU数据派产学研的背景为志愿者带来好的发展机遇。

其他福利:来自于名企的数据科学工作者,北大清华以及海外等名校学生他们都将成为你在翻译小组的伙伴。

点击文末“阅读原文”加入数据派团队~

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:datapi),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。

点击“阅读原文”拥抱组织

独家 | ​数据科学家必知的五大深度学习框架!(附插图)相关推荐

  1. 机器学习者应知的五大深度学习框架

    原文链接:https://heartbeat.fritz.ai/the-5-deep-learning-frameworks-every-serious-machine-learner-should- ...

  2. PaddlePaddle, TensorFlow, MXNet, Caffe2 , PyTorch五大深度学习框架2017-10最新评测

    前言 本文将是2017下半年以来,最新也是最全的一个深度学习框架评测.这里的评测并不是简单的使用评测,我们将用这五个框架共同完成一个深度学习任务,从框架使用的易用性.训练的速度.数据预处理的繁琐程度, ...

  3. 从图像处理到语音识别,25款数据科学家必知的深度学习开放数据集

    选自Analytics Vidhya,作者:Pranav Dar,机器之心编译. 本文介绍了 25 个深度学习开放数据集,包括图像处理.自然语言处理.语音识别和实际问题数据集. 介绍 深度学习(或生活 ...

  4. 面向数据科学家的实用统计学_数据科学家必知的统计数据

    面向数据科学家的实用统计学 Beginners usually ignore most foundational statistical knowledge. To understand differ ...

  5. 数据科学家必知必会的7款Python工具,你会几个?

    如果你有志于做一个数据专家,你就应该保持一颗好奇心,总是不断探索,学习,问各种问题.在线入门教程和视频教程能帮你走出第一步,但是最好的方式就是通过熟悉各种已经在生产环境中使用的工具而为成为一个真正的数 ...

  6. dijkstra算法代码_数据科学家需要知道的5种图算法(附代码)

    在本文中,我将讨论一些你应该知道的最重要的图算法,以及如何使用Python实现它们. 作者:AI公园 导读 因为图分析是数据科学家的未来. 作为数据科学家,我们对pandas.SQL或任何其他关系数据 ...

  7. 王敏捷 - 深度学习框架这十年!

    深度学习框架这十年 王敏捷  ACM'07 纽约大学博士,亚马逊上海研究院应用科学家 内容概览 介绍了深度学习框架发展的三个时期:工具包时代(2014年前).数据流时期(2014-2018).新时代( ...

  8. Keras与PyTorch全方位比较 哪一个深度学习框架更适合初学者?

    Keras或PyTorch作为您的第一个深度学习框架 你想学习深度学习吗?无论您是想开始将其应用于您的业务,建立您的下一个项目,还是仅仅获得当下热门的技能 – 选择合适的深度学习框架来学习是实现目标的 ...

  9. 买房必知的五大法律常识 助你安心顺利选房

    买房必知的五大法律常识 助你安心顺利选房 国家频出新政,对楼市产生了重大影响. 在此背景下,商品房买卖当中法律问题有何新的变化和新的特点?买卖双方应当关注和重视哪些问题?本刊联合建纬(昆明)律师事务所 ...

最新文章

  1. libcurl库的使用(通过libcurl库下载url图像)
  2. “ Error:(1, 1) java: 非法字符: ‘\ufeff‘ ”错误的解决方法
  3. [转载] 中华典故故事(孙刚)——07 二百五
  4. python语言入门e_python 语言学入门第一课必看:编码规范
  5. crud-table_我个人的CRUD故事-或我如何来到CUBA平台
  6. svd medium_我们刚刚放弃了Medium博客。 您可能也应该这样做。
  7. 关于Google Guava的几个问题
  8. 去除面部黑色素小妙招_去除暗黄皮肤的小妙招 7招让你白皙动人
  9. 对事件循环的一点理解
  10. MfC基础--绘图基础--win32
  11. Glib2之定义手册(十八)
  12. 元注解@interface的理解使用
  13. PMP复习整理考点篇【12】--- 激励理论
  14. 计算机竞赛 自主招生,2017年自主招生认可的竞赛汇总
  15. 平生不会相思,才会相思,便害相思
  16. 嵌入式的应用领域有哪些呢?
  17. 试题 基础练习 阶乘计算 (n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组A来表示一个大整数a,A[0]表示a的个位,A[1]表示a的十位,依次类推。   将a乘)
  18. 可由低通滤波器推导变换为高通、带通、带阻滤波器
  19. 电话号码对应英文单词 (python)
  20. 一个小白轻松月入上万块的线上冷门项目

热门文章

  1. c#版在pc端发起微信扫码支付
  2. OptiTrack专为VR主题公园推出了主动追踪方案,可降低40%成本
  3. ifcfg系列命令配置网络属性
  4. linux服务器之LVS、Nginx和HAProxy负载均衡器的对比
  5. GIT如何查看本地分支与远程分支的关联配置(git branch --set-upstream)
  6. Python读写文件 - 转
  7. J-Focus动画应用框架使用教程
  8. C语言字符串操作函数
  9. cdata节 赋值变量_JS原生练习题:第二课第5~12节
  10. 执行“conda create -n scrapyEnv python=3.6”,结果出现了“CondaHTTPError: HTTP 000 CONNECTION FAILED for url <h