每个数据科学家必须知道的5个深度学习框架!

Introduction

在我记忆之前,我一直是程序员。我喜欢从头开始编写代码 - 这有助于我清楚地理解该主题(或技术)。当我们最初学习数据科学时,这种方法特别有用。

尝试从头开始实施神经网络,你会明白很多有趣的事情。但是,您认为在真实数据集上构建深度学习模型时这是一个好主意吗?如果您有数天或数周的时间来等待模型的构建,这绝对是可能的。

对于我们这些无法获得无限计算资源的人来说,你来对了地方。

这是好消息 - 我们现在拥有易于使用的开源深度学习框架,旨在简化复杂和大规模深度学习模型的实施。使用这些惊人的框架,我们可以立即实现像卷积神经网络这样的复杂模型。

在本文中,我们将介绍5个超级有用的深度学习框架,它们的优点和应用程序。我们将比较每个框架,以了解我们何时何地可以使用每个框架。

我们创建了一个非常酷的信息图,它支持每个深度学习框架的价值。 它可以在本文末尾找到,是每位数据科学家必备的。

Table of Contents

  • 1什么是深度学习框架?
  • 2 TensorFlow
  • 3 Keras
  • 4 PyTorch
  • 5 Caffe
  • 6 Deeplearning4j
  • 7比较这些深度学习框架

What is a Deep Learning Framework?

让我们用一个例子来理解这个概念。 考虑下面的图像集合:
在这里插入图片描述

此图像中有各种类别 - 猫,骆驼,鹿,大象等。我们的任务是将这些图像分类到相应的类(或类别)中。快速谷歌搜索告诉我们[卷积神经网络CNNs](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)对此类图像分类任务非常有效。

所以我们需要做的就是实现模型吧?好吧,如果你开始从头开始编写卷积神经网络,那么在获得工作模型之前需要几天(甚至几周)。我们不能等那么久!

这就是深度学习框架真正改变了景观的地方。

深度学习框架是一种界面,库或工具,它允许我们更容易,更快速地构建深度学习模型,而无需深入了解底层算法的细节。它们使用一组预构建和优化的组件为定义模型提供了清晰简洁的方法。

我们可以使用合适的框架来帮助我们快速构建这样的模型,而不是编写数百行代码。以下是良好深度学习框架的一些主要特征:

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

这些是我用来挑选我的前5个深度学习框架的标准。 让我们详细了解每一个。

TensorFlow

在这里插入图片描述

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

我非常喜欢TensorFlow的两件事 - 它是完全开源的,并且拥有出色的社区支持。 TensorFlow为您将遇到的大多数复杂深度学习模型预先编写了代码,例如回归神经网络和卷积神经网络。

TensorFlow如此受欢迎的最大原因之一是它支持多种语言来创建深度学习模型,例如Python,C ++和R.它有适当的文档和演练指导(你真的期待谷歌的破旧工作吗?)。

制作TensorFlow有很多组件。两个突出的是:

1 TensorBoard:使用数据流图帮助实现有效的数据可视化
2 TensorFlow:用于快速部署新算法/实验
TensorFlow的灵活架构使我们能够在一个或多个CPU(以及GPU)上部署我们的深度学习模型。以下是TensorFlow的几个常见用例:

基于文本的应用程序:语言检测,文本摘要
图像识别:图像字幕,人脸识别,物体检测
声音识别
时间序列分析
视频分析
还有更多的用例。 如果您在我上面提到的应用程序之外使用了TensorFlow,我很乐意听取您的意见! 请在本文下方的评论部分告诉我们,我们将进行讨论。

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

For CPU-only:

pip install tensorflow

For CUDA-enabled GPU cards:

pip install tensorflow-gpu

Keras

你习惯使用Python吗?如果是,那么您将立即与Keras联系。它是您开始深度学习之旅的完美框架。

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

另一方面,Keras是一个高级API,开发的重点是实现快速实验。因此,如果想要快速结果,Keras将自动处理核心任务并生成输出。 Keras支持卷积神经网络和递归神经网络。它可以在CPU和GPU上无缝运行。

深度学习初学者的一个常见抱怨是他们无法正确理解复杂的模型。如果您是这样的用户,Keras适合您!它旨在最大限度地减少用户操作,并使模型非常容易理解。

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

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

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'))

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有多种架构,如下所述,用于解决各种各样的问题。 这包括我最喜欢的一个 - 图像分类!

  • VGG16
  • VGG19
  • InceptionV3
  • 移动网络等等

您可以参考[官方Keras文档](https://keras.io/)来详细了解框架的工作原理。

您只需一行代码即可安装Keras:

pip install keras

Intrigued by Keras?
使用以下教程继续学习,在那里您将了解如何使用Keras实现神经网络:

Optimizing Neural Networks using Keras

PyTorch

还记得当我们说TensorFlow是目前最常用的深度学习框架吗?鉴于数据科学家和开发人员正在快速采用Facebook的PyTorch,它可能不会长期存在。

我是一个庞大的PyTorch倡导者。在我所研究的所有框架中,PyTorch是最灵活的。

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

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

PyTorch不是使用具有特定功能的预定义图形,而是为我们提供了一个构建计算图形的框架,甚至可以在运行时更改它们。这对于我们不知道创建神经网络需要多少内存的情况很有用。

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

  • 图像(检测,分类等)
  • 文字(NLP)
  • 强化学习

如果您想知道如何在机器上安装PyTorch,请坚持一下。 安装步骤取决于您的操作系统,要用于安装PyTorch的软件包,您正在使用的工具/语言,CUDA以及一些其他依赖项。

在此处检查PyTorch的安装步骤。 一旦你准备好了框架,请查看以下两个资源,使用PyTorch构建你的第一个神经网络:

Caffe

Caffe是面向图像处理领域的另一种流行的深度学习框架。 它由Yangqing Jia在加州大学伯克利分校获得博士学位。 是的,它也是开源的!

首先,一个警告 - Caffe对循环网络和语言建模的支持不如上述三个框架。 但是,Caffe脱颖而出的是处理和学习图像的速度。 这很容易成为主要的USP。

Caffe每天可以使用一个NVIDIA K40 GPU处理超过六千万张图像。 这是用于推理的1 ms /图像和用于学习的4 ms /图像

它为C,C ++,Python,MATLAB等接口以及传统的命令行提供了坚实的支持。
The Caffe Model Zoo
框架允许我们访问可用于解决深度学习问题的预训练网络,模型和权重。 这些模型适用于以下任务:

  • 简单的回归
  • 大规模视觉分类
  • 用于图像相似性的连体网络
  • 语音和机器人应用

您可以查看caffe的安装documentation了解更多详情。

Deeplearning4j

在这里插入图片描述

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

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

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

  • 图片
  • csv
  • 纯文本等

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

  • 卷积神经网络(CNN)
  • 递归神经网络(RNN)
    • 长期短期记忆(LSTM)和许多其他架构。
      Go through the installation steps and documentation of Deeplearning4j to get started with this framework.

Comparing these 5 Deep Learning Frameworks

我们已经介绍了五个最流行的深度学习框架。 每个都有它自己独特的功能集,这就是为什么数据科学家一个接一个的原因。

你决定使用哪一个? 或者您可能正计划切换到一个全新的框架? 无论如何,了解每个框架的优点和局限性非常重要。 如果您在某个时候遇到错误,您不希望最终感到惊讶!

有些框架可以很好地处理图像数据,但无法解析文本数据。 其他框架在图像和文本数据方面表现良好,但其内部工作可能难以理解。

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

  • 社区支持
  • 写作的语言
  • 界面
  • 支持预训练模型

下表比较了这些框架:
在这里插入图片描述

下次您使用这些框架时,这是一个非常方便的表格!

所有这些框架都是开源的,支持CUDA并且有预训练模型来帮助您入门。 但是,什么应该是正确的起点,你应该选择哪个框架来构建你的(初始)深度学习模型? 来!我们讨论一下!
在这里插入图片描述

TensorFlow

我们将从TensorFlow开始。 TensorFlow适用于图像和基于序列的数据。 如果您是深度学习的初学者,或者对线性代数和微积分等数学概念缺乏扎实的理解,那么TensorFlow的陡峭学习曲线可能会让人望而生畏。

我完全明白,对于刚刚起步的人来说,这方面可能很复杂。 我的建议是继续练习,继续探索社区,并继续阅读文章以获得TensorFlow的支持。 一旦您对框架有了很好的理解,实现深度学习模型对您来说将非常容易。

Keras

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

重点更多的是取得成果,而不是陷入模型错综复杂的困境。 因此,如果您获得与图像分类或序列模型相关的项目,请从Keras开始。 您将能够非常快速地获得工作模型。

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

PyTorch

与TensorFlow相比,PyTorch更直观。 一个包含这两个框架的快速项目将使这一点非常清晰。

即使您没有扎实的数学或纯机器学习背景,您也可以理解PyTorch模型。 随着模型的进行,您可以定义或操作图形,这使得PyTorch更加直观。

PyTorch没有像TensorBoard这样的可视化工具,但你可以随时使用像matplotlib这样的库。 我不会说PyTorch比TensorFlow更好,但这两个深度学习框架都非常有用。

Caffe

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

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

Deeplearning4j

就像我之前提到的,Deeplearning4j是Java程序员的天堂。 它为不同的神经网络提供了大量支持,如CNN,RNN和LSTM。 它可以在不牺牲速度的情况下处理大量数据。 听起来好像有机会放弃!

End Notes & Illustrated Infographic

您是否还有其他深度学习框架? 我很想听听您的想法和反馈,以及我们在本文中介绍的内容。 请在下面的评论部分与我联系。

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

正如所承诺的,这里是详细介绍我们所涵盖的每个深度学习框架的信息图。 下载,打印并在下次构建深度学习模型时使用它!

猜你喜欢

转载自blog.csdn.net/weixin_41697507/article/details/89391216