对付学习数据科学的同学来说,从头开始实现神经网络,会让你理解很多有趣的东西。
但是,我并不认为在真实数据集上构建深度学习模型是个明智的做法,除非你有数天或数周的韶光来等待模型的构建。
那么对付绝大部分无法得到无限资源的人来说,利用易于利用的开源深度学习框架,我们可以立即实现如卷积神经网络这样的繁芜模型。

五个必理解的深度进修框架_框架_模子 AI快讯

在本文中,我将先容5个超级有用的深度学习框架,同时比较每个框架,以理解我们何时何地可以利用哪个框架。

目录什么是深度学习框架TensorFlowKerasPyTorchCaffeDeep Learning4j比较这些深度学习框架一、 什么是深度学习框架

让我们用一个例子来理解这个观点。
考虑下面的图像凑集:

此图像中有各种种别,猫、骆驼、鹿、大象等。
我们的任务是将这些图像分类到相应的类(或种别)中。
Google搜索见告我们,卷积神经网络(CNN)对付此类图像分类任务非常有效。
以是我们须要去实现这个模型,但是如果你开始从头开始编写CNN,那么得到事情模型将是几天后(乃至是几周),而这便是深度学习框架真正改变了这尴尬的局势。

无须写上百行代码,我们仅仅须要利用一个适宜的框架去帮助我们快速建立这样的模型。
以下是良好深度学习框架的一些紧张特色:

针对性能进行了优化易于理解和编码良好的社区支持并行化进程以减少打算自动打算渐变二、 TensorFlow

TensorFlow由Google Brain团队的研究职员和工程师开拓。
它是深度学习领域中最常用的软件库(只管其他人正在迅速遇上)。

TensorFlow如此受欢迎的最大缘故原由是,它支持多种措辞来创建深度学习模型。
比如Python,C++和R措辞,它有适当的文档的演习训练辅导。
制作TensorFlow有很多组件,个中比较突出的两个是:

TensorBoard:利用数据流图帮助实现有效的数据可视化TensorFlow:用于快速支配新算法/实验

TensorFlow的灵巧架构使我们能够在一个或者多个CPU(以及GPU)上支配我们的深度学习模型。
以下是TensorFlow的几个常见用例:

基于文本的运用程序:措辞检测、文本择要图像识别:图像字幕、人脸识别、物体检测声音识别韶光序列剖析***剖析

安装TensorFlow也是一项非常大略的任务:

仅适用于CPU:

对付支持CUDA的GPU卡:

三、 Keras

对付Python爱好者来说,Keras是你开始深度学习之旅的完美框架。
Keras是用Python编写的,可以运行在TensorFlow(以及CNTK和Theano)之上。
TensorFlow接口可能有点寻衅性,由于它是一个低级库,新用户可能会很难明得某些实现。
另一方面,Keras是一个高等API,开拓的重点是实现快速实验。
因此,如果想要快速结果,Keras将自动处理核心任务并天生输出。
Keras支持卷积神经网络和递归神经网络。
它可以在CPU和GPU上无缝运行。
同时,Keras有助于深度学习初学者精确理解繁芜的模型,它旨在最大限度地减少用户操作,并使模型非常随意马虎理解。

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

1. 顺序:模型的各层以顺序办法定义,这意味着当我们演习深度学习模型时,这些层是按顺序实现的。
以下是顺序模型的示例:

2. Keras功能API:常日用于定义繁芜模型,例如多输出模型或具有共享层的模型,查看以下代码以实际办法理解:

Keras有多种架构,如下所述,用于办理各种各样的问题

VGG16VGG19InceptionV3Mobilenet和其他

你可以参考官方Keras文档,以详细理解框架的事情事理:https://keras.io/

仅仅利用一行代码就能够安装Keras:

四、 PyTorch

PyTorch是我所研究的所有框架中最灵巧的,它是Torch深度学习框架的一个端口,可用于构建深度神经网络和实行Tensor打算。
Torch是一个基于Lua的框架,而PyTorch是在Python上运行的,利用动态打算图,它的Autogard软件包从tensors中构建打算图并自动打算梯度。
Tensors是多维数组,就像numpy的ndarrays一样,也可以在GPU上运行。

PyTorch不是利用具有特定功能的预定义图形,而是为我们供应了一个构建打算图形的框架,乃至可以在运行时变动它们。
这对付我们不知道在创建神经网络时该当须要多少内存的情形很有用。

你可以利用PyTorch处理各种深度学习寻衅,包括:

图像(检测、分类等)文本(NLP)强化学习五、 Caffe

Caffe是面向图像处理领域的另一种盛行的深度学习框架。
作者是贾扬清,加州大学伯克利的博士,现就职于阿里巴巴,担当技能副总裁岗位,领导大数据打算平台的研发事情。
须要把稳的是,Caffe对循环网络和措辞建模的支持不如上述三个框架。
但是,Caffe脱颖而出的是处理和学习图像的速率。
这很随意马虎成为紧张的USP。
(USP指的是Unique Selling Proposition,又称创意理论,其特点是必须向受众陈述产品的特点,同时这个特点必须是独特的、必须能够引起发卖)

Caffe为C、C++、Python、Matlab等接口以及传统的命令行供应了坚实的支持。
Caffe Model Zoo(大量的在大数据集上预演习的可供***的模型)框架许可我们访问可用于办理深度学习问题的预演习网络、模型和权重。
这些模型适用于以下任务:

大略回归大规模的视觉分类用于图像相似性的暹罗网络(Siamese Networks)语音和机器人运用

你可以查看Caffe的安装和文档以获取更多详细信息

六、 DeepLearning4j

对付Java程序员,这是空想的深度学习框架。
DeepLearning4j在java中实现,因此与Python比较更高效,它利用称为ND4J的张量库,供应了处理n维数组的能力。
这个框架还支持GPU和CPU。

DeepLearning4j将加载数据和演习算法的任务视为单独的过程,这种功能分离供应了很大的灵巧性。
它同时也适用于不同的数据类型:

图片CSV纯文本等

可以利用DeepLearning4j构建的深度学习模型有:

卷积神经网络(CNN)递归神经网络(RNN)是非影象(LSTM)和许多其他架构七、 五个深度学习框架的比拟

我们已经先容了五个最盛行的深度学习框架。
每个都有它自己独特的功能集,有些框架可以很好地处理图像数据,但无法解析文本数据。
其他框架在图像和文本数据方面表现良好,但其内部事情可能难以理解。
下面我们将利用以下标准比较我们的五个深度学习框架:

社区支持它们用到的措辞接口支持预演习模型

下面这个表格是这些框架的比拟:

所有这些框架都是开源的,支持CUDA并且有预演习模型来帮助您入门。
但是,什么是精确的出发点,该当选择哪个框架来构建你的(初始)深度学习模型?

1. TensorFlow

TensorFlow适用于图像和基于序列的数据。
如果您是深度学习的初学者,或者对线性代数和微积分等数学观点缺少踏实的理解,那么TensorFlow的陡峭学习曲线可能会让人望而生畏。
对付刚刚起步的人来说,这方面可能很繁芜。
我的建议是连续练习,连续探索社区。
一旦您对框架有了很好的理解,实现深度学习模型对您来说将非常随意马虎。

2. Keras

Keras是一个非常可靠的框架,可以开始您的深度学习之旅。
如果您熟习Python并且没有进行一些高等研究或开拓一些分外类型的神经网络,那么Keras就适宜您。
它更多的是让你取得成果,而不是陷入模型错综繁芜的困境。
因此,如果您得到与图像分类或序列模型干系的项目,请从Keras开始,由于你可以非常快速地得到事情模型。

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

3. PyTorch

与TensorFlow比较,PyTorch更直不雅观。
一个包含这两个框架的快速项目将使这一点非常清晰。
纵然你没有踏实的数学或纯机器学习背景,你也可以理解PyTorch模型。
随着模型的进行,您可以定义或操作图形,这使得PyTorch更加直不雅观。
PyTorch没有像TensorBoard这样的可视化工具,但你可以随时利用像matplotlib这样的库。

4. Caffe

当我们在图像数据上构建深度学习模型时,Caffe非常有效。
但是当涉及到递归神经网络和措辞模型时,Caffe掉队于我们谈论过的其他框架。
Caffe的紧张上风在于,纵然您没有强大的机器学习或微积分知识,您也可以构建深度学习模型。
Caffe紧张用于构建和支配用于移动电话和其他打算受限平台的深度学习模型。

5. DeepLearning4j

就像我之条件到的,Deeplearning4j是Java程序员的天国。
它为不同的神经网络供应了大量支持,如CNN,RNN和LSTM。
它可以在不捐躯速率的情形下处理大量数据。

八、 结束

请记住,这些框架实质上只是帮助我们实现终极目标的工具。
明智地选择它们可以减少大量的精力和韶光。
下图是详细先容我们所涵盖的每个深度学习框架的信息图。
你可以选择***,打印并不才次构建深度学习模型时利用它!