深度学习框架PyTorch为何值得学

最后机会:AI Conference 2019 北京站门票正在热销中,机不可失!

大家知道,深度学习的发展和推进,在某种程度上也是一场框架的争夺战,其中 Google 发布的 TensorFlow 和 Facebook 主力支持的 PyTorch 是最耀眼的两颗明星。我们今天就来看看其中一位明星 PyTorch,看看它为何值得学。

简单介绍

PyTorch 强调从研究到生产

来源:https://pytorch.org/

根据官网介绍,PyTorch 是一个开源的深度学习平台,提供从研究原型到生产部署的无缝路径(An open source deep learning platform that provides a seamless path from research prototyping to production deployment)。

PyTorch 的流行度仅次于 TensorFlow。而最近一年,在 GitHub 关注度和贡献者的增长方面,PyTorch 跟 TensorFlow 基本持平。甚至,PyTorch 的搜索热度持续上涨,加上 FastAI 的加持,PyTorch 无疑会得到越来越多的机器学习从业者的青睐。

流行度虽然可以说明问题,但是,你一定要知道更多,才能明白 PyTorch 为什么值得学,你在什么情况下需要学习  PyTorch 。

PyTorch 关键发展节点

2017 年 1 月,Facebook AI 研究团队发布 PyTorch,一个基于 Torch 的 Python 工具包,专门用于 GPU 加速的深度学习编程。

2017 年 8 月,PyTorch V 0.2.0 发布,引入广播、高级索引、高阶梯度、新图层,以及分布式训练等,前两者进一步方便了 Tensor 与 Numpy 互转。

2018 年 4 月,Caffe2 代码合并到 PyTorch。Facebook 打算将 PyTorch 的研究特性与 Caffe2 的生产特性更好地结合起来。

2018 年 4 月,PyTorch V 0.4.0 发布,新特性包括 Tensor 和 Variable 合并,强化 Numpy 风格的 Tensor 构建等,并正式支持 Windows 系统。

2018 年 10 月,PyTorch V 1.0.0 发布,融合 PyTorch 自身灵活性、研究优势与 Caffe2 的后端与应用能力、ONNX 的框架转换能力于一体;同时 FastAI V1.0 发布,可用单一 API 玩转常见深度学习应用,大大降低了深度学习的学习门槛。

2019 年 5 月,PyTorch V 1.1 发布,提供了新的 API,原生支持 TensorBoard 和自定义循环神经网络,并提升了性能。

PyTorch 刚走过了 2 年 4 个月的时间,发展相当迅速。

PyTorch 当前稳定版及相关配置

来源:https://pytorch.org/

受欢迎程度

Jeff Hale 4 月份在 Medium 上发表了一篇文章,比较了 TensorFlow、PyTorch、keras 和 FastAI 的流行度,全面涵盖职位需求、使用、学术研究和兴趣等维度。

Jeff 根据多个招聘网站在线职位搜索、Google Trends、GitHub 活跃度、Arxiv 文章数、Medium 文章数、Quora 相关问题关注人数统计计算出了一个综合的增长分数。我们这里引用一下最终结果图片:

深度学习框架半年增长分数

(2018 年 10 月-2019 年 3 月)

可以看到 TensorFlow 稳居第一,而 PyTorch 表现也非常抢眼,未来的需求和发展非常值得期待。

PyTorch 核心优势:动态计算图

PyTorch  是一款强大的动态计算图模式的深度学习框架。大部分框架是静态计算图模式,其应用模型在运行之前就已经确定了,而 PyTorch 支持在运行过程中根据运行参数动态改变应用模型。

可以简单理解为:一种是先定义后使用,另一种是边使用边定义。动态计算图模式是 PyTorch 的天然优势之一,Google 今年 3 月份发布的 TensorFlow 2.0 Alpha 版本中的 Eager Execution,被认为是在动态计算图模式上追赶 PyTorch 的举措。

静态计算图模式框架在执行计算图之前需要先声明和编译。 虽然在实际生产中这种实现比较高效,但在研究和开发中非常繁琐。

以 PyTorch 为代表的动态计算图框架则无需在每次执行之前编译模型。在建模 NLP 任务时,每个输入都可能导致不同的图结构,因此动态图就绝对占优了——这也是 PyTorch 在处理很多问题上(尤其是 RNN 相关问题)更高效的原因。

此外,动态图机制在调试方面非常方便,基本上,如果计算图运行出错,就可以在堆栈跟踪定义图的代码行。有人形容调试  PyTorch 就跟调试 Python 一样,通过断点检查就可以高效解决问题。

PyTorch 更多优势

  • 无缝接入 Python 生态圈,张量、变量与 Numpy 互转

  • 张量之上封装变量,方便构建神经网络

  • 强大的后端功能

  • 命令式编程风格

  • 扩展性极好

  • 广泛应用于 NLP 之外的多种深度学习应用

  • 富有活力的社区和背后大厂 Facebook 支持

  • ......

深入了解与使用 PyTorch

如果你想深入细致了解使用 PyTorch 快速高效地构建深度学习模型,那么——

资深数据科学Rich Ott 在O’Reilly主办的 AI  Conference 2019 北京站上主讲的「PyTorch 深度学习课程值得学习,学习时间为期两天,具体为 6 月 18 日 ~ 6 月 19 日。

有志于将来投身人工智能领域的 Python 开发者、Python 数据分析师,以及想进一步深入理解 PyTorch 的机器学习工程师、算法工程师,不要错过这次与国外资深专业人士一起学习的机会。

导师:Richard Ott

The Data Incubator 数据科学家,热爱数据科学,并致力于数据知识的传播与教学。曾在 Verizon 担任数据科学家和软件工程师。麻省理工学院粒子物理学博士,加州大学戴维斯分校博士后。

学习内容

  • 学习 PyTorch 张量和自动求导包

  • 多种 PyTorch 深度学习模型架构

  • 使用真实数据集构建和训练深度神经网络

前置知识

  • 基本的 Python 知识

  • 简单的矩阵和线性代数知识

  • 建模和机器学习基础

  • 神经网络基础

课程大纲

6 月 18 日

  • PyTorch 张量

  • 自动求导包

  • 神经网络

  • 多层感知机

6 月 19 日

  • 神经网络架构

  • 卷积神经网络

  • 自动编码器

参考资料

参会指南

AI Conference 2019北京站正在火热报名中,登录会议官网查看讲师和议题详情:https://ai.oreilly.com.cn/ai-cn

现在是会前优惠票价的最后阶段,席位有限,抢票从速。


产业PyTorch深度学习
3
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

自动编码器技术

自动编码器是用于无监督学习高效编码的人工神经网络。 自动编码器的目的是学习一组数据的表示(编码),通常用于降维。 最近,自动编码器已经越来越广泛地用于生成模型的训练。

数据分析技术

数据分析是一类统计方法,其主要特点是多维性和描述性。有些几何方法有助于揭示不同的数据之间存在的关系,并绘制出统计信息图,以更简洁的解释这些数据中包含的主要信息。其他一些用于收集数据,以便弄清哪些是同质的,从而更好地了解数据。 数据分析可以处理大量数据,并确定这些数据最有用的部分。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

多层感知机技术

感知机(Perceptron)一般只有一个输入层与一个输出层,导致了学习能力有限而只能解决线性可分问题。多层感知机(Multilayer Perceptron)是一类前馈(人工)神经网络及感知机的延伸,它至少由三层功能神经元(functional neuron)组成(输入层,隐层,输出层),每层神经元与下一层神经元全互连,神经元之间不存在同层连接或跨层连接,其中隐层或隐含层(hidden layer)介于输入层与输出层之间的,主要通过非线性的函数复合对信号进行逐步加工,特征提取以及表示学习。多层感知机的强大学习能力在于,虽然训练数据没有指明每层的功能,但网络的层数、每层的神经元的个数、神经元的激活函数均为可调且由模型选择预先决定,学习算法只需通过模型训练决定网络参数(连接权重与阈值),即可最好地实现对于目标函数的近似,故也被称为函数的泛逼近器(universal function approximator)。

人工智能技术

在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)

TensorBoard技术

一个信息中心,用于显示在执行一个或多个 TensorFlow 程序期间保存的摘要信息。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

数据科学技术

数据科学,又称资料科学,是一门利用数据学习知识的学科,其目标是通过从数据中提取出有价值的部分来生产数据产品。它结合了诸多领域中的理论和技术,包括应用数学、统计、模式识别、机器学习、数据可视化、数据仓库以及高性能计算。数据科学通过运用各种相关的数据来帮助非专业人士理解问题。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

张量技术

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

卷积神经网络技术

卷积神经网路(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网路由一个或多个卷积层和顶端的全连通层(对应经典的神经网路)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网路能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网路在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网路,卷积神经网路需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。 卷积网络是一种专门用于处理具有已知的、网格状拓扑的数据的神经网络。例如时间序列数据,它可以被认为是以一定时间间隔采样的一维网格,又如图像数据,其可以被认为是二维像素网格。

线性代数技术

线性代数是数学的一个分支,它的研究对象是向量,向量空间(或称线性空间),线性变换和有限维的线性方程组。向量空间是现代数学的一个重要课题;因而,线性代数被广泛地应用于抽象代数和泛函分析中;通过解析几何,线性代数得以被具体表示。线性代数的理论已被泛化为算子理论。由于科学研究中的非线性模型通常可以被近似为线性模型,使得线性代数被广泛地应用于自然科学和社会科学中。

深度神经网络技术

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

推荐文章
暂无评论
暂无评论~