PyTorch是一个不断发展的深度学习框架,具有许多令人兴奋的附加功能。我们将回顾其基本元素,并逐步演示构建简单的深度神经网络(DNN)的示例。

  

  PyTorch的基础知识-简介

  自从2017年初推出它以来, PyTorch 已经成为高度流行且广泛使用的深度学习(DL)框架。自从不起眼的开始以来,它就引起了全世界工业界和学术界的严肃AI研究人员和从业者的注意,并且这些年来已经显着成熟。

  数十名DL发烧友和专业人士从百度开始了他们的旅程,但是基于TensorFlow的学习曲线一直很艰难。另一方面,PyTorch从一开始就以一种直观的方式进行DL编程,以一种易于理解且易于逐步学习的方式专注于基本线性代数和数据流运算。

  由于采用了这种模块化方法,与遵循较为严格的TF和基于TF的工具框架相比,使用PyTorch进行复杂的DL架构的构建和试验变得容易得多。此外,PyTorch的构建是为了与Python生态系统的数值计算基础架构无缝集成,而Python是数据科学和机器学习的通用语言,它摆脱了这一日益流行的浪潮。

  使用PyTorch进行Tensor操作

  Tensors是任何DL框架的核心。PyTorch为程序员提供了极大的灵活性,使其可以在Tensors流经与相对高级的面向对象API配对的网络(称为计算图)时创建,组合和处理Tensors。

  什么是Tensors?

  通过称为Tensors的数据/数学结构来完成表示机器学习(ML)(尤其是DNN)的数据(例如,有关物理世界或某些业务流程的数据) 。Tensors是一个可以容纳N 维数据的容器。Tensors经常与另一个更熟悉的数学对象矩阵 (具体来说是二维Tensors)互换使用 。实际上,Tensors是二维矩阵到N维空间的推广 。

  用简单的术语来说,可以将标量矢量矩阵Tensors视为一种流。

  1)标量是0维Tensors。

  2)向量是一维Tensors。

  3)矩阵是二维Tensors

  4)Tensors是广义的N维 Tensors。N可以是3到无穷大的任何数字。

  通常,这些尺寸也称为 等级。

  

  为什么Tensors对于ML和DL很重要?

  考虑一个监督的机器学习问题。您会得到带有某些标签的数据表(可以是数字实体或二进制分类,例如“是/否”答案)。为了使用ML算法对其进行处理,必须将数据作为数学对象进行馈送。表格自然等效于2-D矩阵,其中单个行(或实例)或单个列(或要素)可以视为一维矢量。

  类似地,黑白图像可以视为包含数字0或1的2-D矩阵。可以将其输入神经网络以进行图像分类或分割任务。

  时间序列或序列数据(例如,来自监视机的ECG数据或股票市场价格跟踪数据流)是二维(二维)数据的另一个示例,其中一维(时间)是固定的。

  这些是在经典ML(例如线性回归,支持向量机,决策树等)和DL算法中使用2-DTensors的示例。

  超越二维,彩色或灰度图像可被视为3-DTensors,其中每个像素都与所谓的“色彩通道”相关联-“ 3-数字”矢量代表红绿蓝中的强度(RGB)光谱。这是一个3-DTensors的例子。

  类似地,视频可以被认为是时间上的彩色图像(或帧)序列,并且可以被认为是4DTensors。

  简而言之,可以通过多维Tensors轻松表示来自物理世界,传感器和仪器,商业和金融,科学或社会实验的各种数据,以使其适合在计算机内部通过ML/DL算法进行处理。

  让我们看看PyTorch如何定义和处理Tensors。

  在PyTorch中创建和转换Tensors

  可以从Python列表中定义Tensors,如下所示:

  

  可以按以下方式访问和索引实际元素

  

  具有特定数据类型的Tensors可以轻松创建(例如,浮点数)

  

  尺寸和尺寸易于阅读

  

  我们可以更改Tensors的视图。让我们从一维Tensors开始,如下所示:

  

  然后将视图更改为二维Tensors,

  

  在PyTorchTensors和NumPy数组之间来回切换既简单又有效。

  

  从熊猫系列对象进行转换也很容易,

  

  最后,可以转换回Python列表,

  

  使用PyTorch Tensors的向量和矩阵数学

  PyTorch提供了一个易于理解的API和编程工具箱,以数学方式处理Tensors。我们在这里显示一维和二维Tensors的基本操作。

  简单的向量加法

  

  标量矢量乘法

  

  线性组合

  

  元素产品,

  

  点积

  

  在Tensors的每个元素上添加标量,即广播,

  

  从列表中创建二维Tensors,

  

  矩阵元素的切片和索引

  

  矩阵乘法

  

  矩阵转置

  

  矩阵逆和行列式

  

  Autograd:自动区分

  神经网络的训练和预测涉及一遍又一遍地获取各种函数(Tensors值)的导数。Tensor对象支持神奇的Autograd功能,即自动微分,这是通过跟踪和存储在流过网络的Tensors上执行的所有操作来实现的。您可以观看以下精彩的教程视频以进行直观说明:

  Pytorch autograd 官方文档在这里。

  我们展示了一些简单的示例来说明PyTorch的autograd功能。

  

  我们定义一个泛型函数和一个Tensors变量 x,然后定义另一个变量 y, 将其分配给x的函数 。

  

  然后,我们 在y上使用特殊的 向后()方法 获取导数,并在给定的x值下计算导数 。

  

  我们还可以处理偏导数!

  

  我们可以将u 和 v定义为Tensors变量,定义将它们组合在一起的函数,应用反向方法,并计算偏导数。见下文,

  

  PyTorch仅计算标量函数的导数,但是如果我们传递矢量,则本质上它将按元素计算导数并将它们存储在相同维数的数组中。

  

  以下代码将针对三个组成矢量计算导数。

  

  我们可以显示导数的图。注意,二次函数的导数是与抛物线曲线相切的直线。

  

  建立完整的神经网络

  除了Tensors和自动微分能力之外,PyTorch的其他核心组件/功能很少,可以对神经网络进行深入定义。

  用于构建神经分类器的PyTorch的核心组件是,

  1) Tensors (在PyTorch中央数据结构)

  2)Tensor 的 Autograd功能(自动微分公式烘焙到

  3)nn.Module 用来建立任何其他神经分类类类

  4)优化器 (当然,也有很多可供选择)

  5)损失 函数(一个大的选择是供你选择)

  我们已经详细描述了Tensor和Autograd。让我们快速讨论其他组件,

  nn.Module类

  在PyTorch中,我们通过将其定义为自定义类来构建神经网络。但是,此类不是从本地Python对象派生的,而是从nn.Module类继承的 。这为神经网络类注入了有用的属性和强大的方法。这样,在使用神经网络模型时,可以保持面向对象编程(OOP)的全部功能。我们将在大数据分析PyTorchx深度学习框架教程中看到此类定义的完整示例。

  损失函数

  在神经网络的架构和操作中,损失函数定义了神经网络的最终预测与地面真实情况(给定标签/类或用于监督训练的数据)之间的距离。损失的定量度量有助于使网络更接近配置(神经元权重的最佳设置),从而最好地对给定的数据集进行分类或预测总误差最小的数值输出。

  PyTorch提供了用于分类和回归任务的所有常见损失函数-

  1)二元和多类交叉熵,

  2)均方根和绝对绝对误差,

  3)L1损失平稳

  4)对数似然损失,甚至

  5)Kullback-Leibler分歧。

  可以在大数据分析PyTorchx深度学习框架教程中找到有关这些内容的详细讨论。

  优化器

  权重的优化以实现最低的损失是用于训练神经网络的反向传播算法的核心。PyTorch通过torch.optim模块提供了许多优化器来完成这项工作-

  1)随机梯度下降(SGD),

  2)亚当,阿达德塔,阿达格勒,SpareAdam,

  3)L-BFGS,

  4)RMSprop等

  查看大数据分析PyTorchx深度学习框架教程以了解更多有关现代深度神经网络中使用的激活函数和优化器的信息。

  五步法

  使用这些组件,我们将通过五个简单的步骤构建分类器,

  1)将神经网络构造为自定义类(继承自 nn.Module 类),其中包含隐藏层Tensors以及用于通过各种层和激活函数传播输入Tensors的正向方法

  2)使用forward() 方法在网络中传播特征Tensors(从数据集中) -说我们得到一个输出Tensors

  3)通过将输出与地面真实情况进行比较并使用内置损耗函数来计算损耗

  4)使用自动微分能力(Autograd)和向后方法传播损失的梯度

  5)使用损耗的梯度来更新网络的权重-这是通过执行所谓的优化器-optimizer.step()的一个步骤来完成的。

  就是这样。这个五步过程构成了 一个完整的培训时期。我们只重复一遍,以降低损失并获得较高的分类精度。

  这个主意如下:

  

  动手实例

  假设我们要构建和训练以下2层神经网络。

  

  我们从类定义开始,

  

  我们可以将变量定义为属于此类的对象,然后打印摘要。

  

  我们选择二进制交叉熵损失,

  

  让我们通过已定义的神经网络模型运行输入数据集,即 一次向前通过并计算输出概率。由于权重已初始化为随机,因此我们将看到随机输出概率(大多数接近0.5)。 该网络尚未训练。

  

  我们定义优化器

  

  接下来,我们展示如何使用优化程序的一个步骤进行正向和反向传递。 可以在任何PyTorch神经网络模型的核心找到这组代码。我们遵循另外五个步骤

  1)将渐变重置为零(以防止渐变累积)

  2)将Tensors向前穿过层

  3)计算损失Tensors

  4)计算损失的梯度

  5)通过将优化器增加一级(沿负梯度的方向)来更新权重

  上面的五个步骤 正是您在有关神经网络和深度学习的所有理论讨论中(以及在教科书中)可以观察和了解的。而且,借助PyTorch,您可以逐步使用看似简单的代码来实现此过程。

  代码如下所示

  

  当 我们在一个循环上(对于多个时期)运行相同类型的代码时,我们可以观察到熟悉的损耗曲线下降,即神经网络逐渐受到训练。

  

  在训练了200个时期之后,我们可以再次直接查看概率分布,以查看神经网络输出概率现在有何不同(尝试与真实数据分布匹配)。

  

  PyTorch基础知识摘要

  PyTorch是一个很好的软件包,可用于深入神经网络的核心并针对您的应用对其进行自定义,或者尝试使用网络的体系结构,优化和机制来尝试大胆的新想法。

  您可以轻松地构建复杂的互连网络,尝试新颖的激活函数,混合并匹配自定义损失函数等。计算图,轻松的自动微分以及Tensors的正向和反向流动的核心思想将对您的任何人都很方便神经网络定义和优化。

  在大数据分析PyTorchx深度学习框架教程中,我们总结了一些关键步骤,可以遵循这些关键步骤来快速构建用于分类或回归任务的神经网络。我们还展示了如何使用此框架轻松地尝试巧妙的想法。

摘自:https://www.aaa-cg.com.cn/data/2560.html?ly

大数据分析PyTorchx深度学习框架教程相关推荐

  1. 大数据早报:百度开源移动端深度学习框架 中国联通成立大数据公司(9.26)

    数据早知道,上36dsj看早报! 来源36大数据,作者:奥兰多 『深度学习』百度开源移动端深度学习框架mobile-deep-learning 2017 年 9 月 25 日,百度在 GitHub 开 ...

  2. TensorFlow领衔,七大深度学习框架大对比!

    作者|黄文坚 唐源 编辑|小智 TensorFlow 在 2015 年年底一出现就受到了极大的关注,在一个月内获得了 GitHub上超过一万颗星的关注,目前在所有的机器学习.深度学习项目中排名第一,甚 ...

  3. python机器学习系列教程——深度学习框架比较TensorFlow、Theano、Caffe、SciKit-learn、Keras

    全栈工程师开发手册 (作者:栾鹏) python教程全解 Theano Theano在深度学习框架中是祖师级的存在.Theano基于Python语言开发的,是一个擅长处理多维数组的库,这一点和nump ...

  4. 深度学习框架zf_深度学习十大框架比较

    框架比较(转): 1 TensorFlow 对于那些听说过深度学习但还没有太过专门深入的人来说,TensorFlow 是他们最喜欢的深度学习框架,但在这里我要澄清一些事实. 在 TensorFlow ...

  5. 史上最全深度学习环境配置教程---适用于各种深度学习框架---Pytorh TensorFlow Keras-等和各种python环境

    鉴于我之前学深度学习,图像处理的时候走了很多弯路踩了很多坑的情况(其实主要是最近不想学习,想水一期博客),决定出一期深度学习环境配置的教程,因为我之前配置opencv的环境,TensorFlow的环境 ...

  6. 深度学习框架大PK:TNN决战MNN,ncnn依旧经典

    近年来,开发者社区中,「开源」成了新流行趋势. 尤其是深度学习框架,自腾讯2017年将ncnn开源之后,各大AI实验室都「慷慨」的将自己的框架开源,以实现较为快速的创新. 今年6月10日,腾讯又宣布基 ...

  7. 深度学习框架TensorFlow、Caffe、MXNet、PyTorch如何抉择?6 位大咖现身说法

    2017 年 6 月,EGO 邀请了 6 位行业大咖,聚焦深度学习框架选择与应用实战,进行了近 3 小时的在线探讨.本文根据当天内容精编而成.6位参与人分别是(排名不分先后): 彭垚-七牛人工智能实验 ...

  8. CV:Win10下深度学习框架安装之Tensorflow/tensorflow_gpu+Cuda+Cudnn(最清楚/最快捷)之详细攻略(图文教程)

    CV:Win10下深度学习框架安装之Tensorflow/tensorflow_gpu+Cuda+Cudnn(最清楚/最快捷)之详细攻略(图文教程) 导读 本人在Win10下安装深度学习框架Tenso ...

  9. 2019 深度学习框架大盘点!看 PyTorch、TensorFlow 如何强势上榜?

    点击上方"AI有道",选择"星标"公众号 重磅干货,第一时间送达 本文将以一个视频的方式讲解 2019 年深度学习各大框架.视频作者来自人工智能领域的网红小哥  ...

最新文章

  1. Linux-Load Average解析
  2. 风水学是天气预测模型
  3. 为什么黑客用python-为什么黑客都用Python
  4. 【从caffe到Tensorflow 1】io 操作
  5. TensorFlow 笔记1--基本用法
  6. w10计算机无法打印,win10升级后惠普无法打印怎么解决_win10升级后惠普打印不了的处理办法...
  7. 2011系统架构师大会分享-自动化运维中的关系管理
  8. Swift - 05 - 数值型字面量
  9. ISO50001认证辅导,ISO 50001的能源管理允许组织对自己内部的节能潜力进行系统开发
  10. 什么叫运营---一个人,一张网,一艘船,独钓寒江雪!
  11. TSINGSEE青犀视频开发人脸识别技术实现过程中的的难点汇总
  12. 斐讯路由器怎么设置虚拟服务器,斐讯无线路由器设置教程图解
  13. 第四百三十五章 灭龙魔宫
  14. macbook linux 双系统,mac安装linux双系统的吐槽
  15. 练习:尼姆游戏(聪明版/傻瓜式•人机对战)
  16. 瑞科生物通过聆讯:9个月亏损超5亿 君联与红杉是股东
  17. Linux操作系统下的权限设置
  18. 使用ffmpeg从视频中提取音频文件
  19. 038 浅谈PHP动态生成静态页面
  20. 理解 ES5, ES2015(ES6) 和 TypeScript

热门文章

  1. [深度学习] 超参数优化
  2. CSS学习笔记 08、过渡与动画
  3. SpringBoot-整合Beetlsql及多数据源整理
  4. html收货地址填写怎么做才合理_匀思电商:拼多多卖家设置发货地址有哪些注意事项?...
  5. muduo学习之socks4a
  6. A1097 Deduplication on a Linked List
  7. vs2010旗舰版 安装失败原因
  8. c语言vc2010,vc++ 2010下载|vc2010 中文旗舰版-520下载站
  9. cdr mac majave os_教你如何制作macOS Mojave 系统的ISO 安装文件
  10. 【IoT】加密与安全:CC254x 低功耗蓝牙 BLE 之 AES-128 加密算法