5个热门的深度学习框架 | 附文档

共 6561字,需浏览 14分钟

 ·

2020-10-13 01:00

点击上方AI算法与图像处理”,选择加"星标"或“置顶”

重磅干货,第一时间送达

来源:深度学习与计算机视觉

介绍
我是一名程序员,喜欢从头开始编写代码,这有助于我清楚地理解算法的技术细节。当我们最初学习数据科学时,这种方法是特别有用的。
从头开始实现一个神经网络,你会学到很多有意义的知识,但是在现实世界的数据集上从头建立深度学习模型并不是一个很好的方法,因为我们常常需要几天或几周的时间来建立模型。
对于我们这些无法获得足够的计算资源的人来说,你来对了地方。
幸运的是我们现在拥有易于使用的开源深度学习框架,旨在简化复杂的大规模深度学习模型的实施,使用这些框架,我们可以立即实现卷积神经网络之类的复杂模型。
在本文中,我们将介绍5个超级有用的深度学习框架,并介绍它们的优点及其应用。我们还将比较每个框架,以了解何时何地可以使用这些框架。
在本文结尾处,我们还创建了一个非常酷的信息图,它描述了每个深度学习框架的价值。

目录

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

什么是深度学习框架?

让我们通过一个例子来理解这个概念
以上图像集合中,有多种类别——猫,骆驼,鹿,大象等。我们的任务是将这些图像分类为相应的类别。我们知道卷积神经网络(CNN)对于此类图像分类任务是非常有效的。
如果你从头开始编写卷积神经网络代码,则需要几天(甚至几周)才能获得有效的模型。我们不能等那么久!
这就是深度学习框架真正的用武之地。
“深度学习框架是接口,库或工具,使我们能够更轻松,快速地构建深度学习模型,而无需深入了解基础算法的细节。它们为使用一组预先构建和优化的组件定义模型提供了一种清晰简洁的方法。”
无需编写数百行代码,我们可以使用合适的框架来帮助我们快速构建这样的模型。以下是一个良好的深度学习框架必须拥有的一些关键功能:
  1. 性能优化
  2. 易于理解和编码
  3. 良好的社区支持
  4. 并行处理以减少计算
  5. 自动计算梯度
这些是我用来挑选深度学习框架的前5个标准,首先让我们详细研究这些框架中的每一个。

TensorFlow

TensorFlow由Google Brain团队的研究人员和工程师开发,它无疑是深度学习领域中最常用的软件库(尽管其他软件库正在迅速追赶)。
我非常喜欢TensorFlow的两件事——它是完全开源的,并具有出色的社区支持。TensorFlow为你遇到的大多数复杂深度学习模型(例如递归神经网络和卷积神经网络)预先编写了代码。
TensorFlow如此受欢迎的最大原因之一是它支持多种语言来创建深度学习模型,例如Python,C ++和R。它还具有丰富的文档和指导性说明文件。
TensorFlow包含许多组件,两个最出色的组件是:
TensorBoard:使用数据流图帮助有效地可视化数据
TensorFlow:对于快速部署新算法/实验非常有用
TensorFlow的灵活架构使我们能够在一个或多个CPU(以及GPU)上部署深度学习模型。以下是TensorFlow的一些流行用例:
  1. 基于文本的应用程序:语言检测,文本摘要
  2. 图像识别:图像字幕,人脸识别,目标检测
  3. 声音识别
  4. 时间序列分析
  5. 视频分析
如果你在我上面提到的其它应用程序使用过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
  • TensorFlow教程
    • https://www.tensorflow.org/tutorials

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具有多种架构,如下所述,用于解决各种各样的问题,也包括我一直以来的最爱之一——图像分类!
  1. VGG16
  2. VGG19
  3. InceptionV3
  4. Mobilenet等
你可以参考Keras官方文档以详细了解该框架的工作原理。
  • Keras官方文档:https://keras.io/
你只需要一行代码即可安装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/

PyTorch

随着数据科学家和开发人员迅速接受Facebook的PyTorch的步伐,TensorFlow可能不会火的太久。
我是PyTorch的拥护者,在我研究过的所有框架中,PyTorch是最灵活的。
PyTorch是Torch深度学习框架的移植,可用于构建深度神经网络和执行张量计算。Torch是一个基于Lua的框架,而PyTorch在Python上运行。
PyTorch是提供Tensor计算的Python软件包。张量是多维数组,就像numpy的ndarrays一样,它们也可以在GPU上运行。PyTorch使用动态计算图,PyTorch的Autograd软件包从张量构建计算图并自动计算梯度。
PyTorch代替了具有特定功能的预定义图形,它为我们提供了一个框架,使我们可以随时构建计算图,甚至在运行时进行更改。对于我们不知道创建神经网络需要多少内存的情况,这是很有用的。
你可以使用PyTorch应对各种深度学习挑战,包括:
  1. 图像(检测,分类等)
  2. 文字(NLP)
  3. 强化学习
PyTorch的安装步骤因你的操作系统,要用于安装PyTorch的软件包,所使用的工具/语言,CUDA以及其他一些依赖项而异。
在此处(https://PyTorch.org/) 检查PyTorch的安装步骤。准备好框架后,请查看以下两个资源,使用PyTorch构建你的第一个神经网络:
  • 了解如何使用PyTorch构建快速而准确的神经网络– 4个很棒的案例研究
    • https://www.analyticsvidhya.com/blog/2019/01/guide-PyTorch-neural-networks-case-studies
  • PyTorch教程
    • https://PyTorch.org/tutorials/beginner/deep_learning_60min_blitz.html

Caffe

Caffe是面向图像处理领域的另一种流行的深度学习框架,它是由贾扬清在加州大学伯克利分校攻读博士学位期间开发的,并且是开源的!
首先,需要注意的是– Caffe对递归网络和语言建模的支持不如上述三个框架强大,但是使Caffe脱颖而出的是处理和从图像中学习的速度,这很容易成为主要的USP。
Caffe单个NVIDIA K40 GPU每天可处理六千万张图像,推理是1毫秒/图,学习是4毫秒/图。
它为C,C ++,Python,MATLAB以及传统命令行等接口提供了坚实的支持。
Caffe Model-Zoo框架允许我们访问预先训练的网络、模型和权重,这些都可以用来解决深度学习问题。这些模型用于以下任务:
  1. 简单回归
  2. 大规模视觉分类
  3. 连体网络的图像相似性
  4. 语音和机器人应用
你可以检查Caffe的安装和文档以获取更多详细信息。
  • Caffe安装:http://Caffe.berkeleyvision.org/installation.html
  • Caffe文档:http://Caffe.berkeleyvision.org/

deeplearning4j

这是Java程序员理想的深度学习框架!Deeplearning4j是用Java实现的,因此与Python相比,效率更高。它使用名为ND4J的张量库,该库提供了使用n维数组(也称为张量)的功能。该框架还支持CPU和GPU。
Deeplearning4j将加载数据和训练算法的任务视为单独的过程,这种功能上的分离提供了很大的灵活性。在深度学习中,有谁会不喜欢呢?
Deeplearning4j也适用于不同的数据类型:
  1. 图片
  2. CSV
  3. 纯文本等
你可以使用Deeplearning4j构建的深度学习模型有:
  • 卷积神经网络(CNN)
  • 递归神经网络(RNN)
  • 长短期记忆人工神经网络(LSTM)和许多其他体系结构。
阅读Deeplearning4j 的安装步骤和文档,以开始使用此框架。
  • 安装步骤:https://deeplearning4j.org/docs/latest/deeplearning4j-config-gpu-cpu
  • 文档:https://deeplearning4j.org/docs/latest/deeplearning4j-quickstart

比较这5种深度学习框架

我们已经介绍了五个最受欢迎的深度学习框架。每个数据科学家都有自己独特的功需求与爱好,所以选择的框架也各不相同。
你确定了要使用哪一个吗?或者,你正计划切换到全新的框架?无论如何,重要的是要了解每个框架的优点和局限性。
有些框架与图像数据配合使用非常好,但是无法通过文本数据进行解析,而其他框架在图像和文本数据上均表现良好,但其内部工作可能难以理解。
在本节中,我们将使用以下标准比较五个深度学习框架:
  1. 社区支持
  2. 开发语言
  3. 接口
  4. 支持的预训练模型
下表比较了这些框架:
深度学习框架
发行年份
用哪种语言写的
支持CUDA吗
它有预训练的模型吗
TensorFlow
2015年
C++, Python
支持
keras
2015年
Python
支持
PyTorch
2016年
Python, C
支持
Caffe
2013年
C++
支持
Deeplearning4j
2014年
C++, Java
支持
这是一个非常方便的表格!
这些框架都是开源的,支持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程序员的天堂,它为CNNs、RNNs和LSTMs等不同的神经网络提供了大量的支持,它可以在不牺牲速度的情况下处理大量数据。

尾注和插图说明

请记住,这些框架本质上只是帮助我们达到最终目标的工具,明智地选择它们可以减少大量的精力和时间。
如所承诺的,以下是信息图,其中详细介绍了我们涵盖的每个深度学习框架。你可以下载保存并在下次构建深度学习模型时使用它!
参考链接:https://www.analyticsvidhya.com/blog/2019/03/deep-learning-frameworks-comparison/


下载1:OpenCV黑魔法


AI算法与图像处理」公众号后台回复:OpenCV黑魔法,即可下载小编精心编写整理的计算机视觉趣味实战教程



下载2 CVPR2020

AI算法与图像处公众号后台回复:CVPR2020即可下载1467篇CVPR 2020论文
个人微信(如果没有备注不拉群!
请注明:地区+学校/企业+研究方向+昵称


觉得有趣就点亮在看吧


浏览 37
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报