Pytorch中的.backward()方法

这篇具有很好参考价值的文章主要介绍了Pytorch中的.backward()方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考 Pytorch中的.backward()方法_deephub的博客-CSDN博客_.backward

0. requires_grad 的含义

  • requires_gard 是Tensor变量的一个属性,一般默认为False。
  • 如果对于某Variable 变量 x ,其 x.requires_grad == True, 则表示它可以参与求导,也可以从它向后求导。
  • requires_grad == True 具有传递性:若 x.requires_grad == Truey.requires_grad == Falsez=f(x,y)则,z.requires_grad == True
  • 凡是参与运算的变量(包括 输入量,中间输出量,输出量,网络权重参数等),都可以设置 requires_grad。

1.backward 的使用

假设

pytorch的backward,机器学习,pytorch,人工智能,python

 我们将得到

pytorch的backward,机器学习,pytorch,人工智能,python

 但如果a和b是向量,那么下面的代码会报错

pytorch的backward,机器学习,pytorch,人工智能,python

pytorch的backward,机器学习,pytorch,人工智能,python

 原因是,当我们调用张量的backward函数时,如果对非标量(即它的数据有不止一个元素)的张量求梯度,这个函数需要指定特定梯度。

这里F是非标量张量,所以我们要把梯度参数传递给和张量F维数相同的backward函数,即

pytorch的backward,机器学习,pytorch,人工智能,python

 得到                                     

 pytorch的backward,机器学习,pytorch,人工智能,python

 文章来源地址https://www.toymoban.com/news/detail-564089.html

2.backward 的理解

torch.autograd是一个计算向量-雅可比积的引擎。即给定任意向量v,计算其乘积 。

  • @表示矩阵乘法
  • 表示雅可比矩阵,即一个全偏导数的矩阵。考虑函数y,假定它有n维的输入向量x,有m维的输出。则

pytorch的backward,机器学习,pytorch,人工智能,python

  •   为backword函数提供的外梯度。

注:当输出张量为标量时,则v_vector的大小为1,即torch.tensor([1.]),可省略。当输出张量是非标量时,我们需要传递外部梯度向量 。

则对于上式  在  = [10.0, 10.0], =[20.0, 20.0], =[1. ,1.],我们得到 ∂/ ∂ :

pytorch的backward,机器学习,pytorch,人工智能,python

到目前为止,我们有: 

pytorch的backward,机器学习,pytorch,人工智能,python

pytorch的backward,机器学习,pytorch,人工智能,python

 我们引入一个新的变量G,它依赖于F

pytorch的backward,机器学习,pytorch,人工智能,python

 我们检查一下的grad值也就是 grad,

pytorch的backward,机器学习,pytorch,人工智能,python

 并得到了警告,

pytorch的backward,机器学习,pytorch,人工智能,python

 在前向传播过程中,自动动态生成计算图。对于上面的代码示例,动态图如下:

pytorch的backward,机器学习,pytorch,人工智能,python

 从上面的计算图中,我们发现张量A和B是叶节点。我们可以用is_leaf来验证。

pytorch的backward,机器学习,pytorch,人工智能,python

Torch backward() 仅在默认情况下累积叶子节点张量的梯度。因此,F grad没有值,因为F张量不是叶子节点张量。

为了积累非叶子节点的梯度,我们可以使用retain_grad方法如下:

pytorch的backward,机器学习,pytorch,人工智能,python

 

 

到了这里,关于Pytorch中的.backward()方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【机器学习】随机种子Random Seed介绍(在Python、Pytorch、TensorFlow中的设置代码汇总)

    Random seed(随机种子) 是在生成随机数时使用的起始点。它用于控制随机数生成器产生随机数的序列。设置了随机种子后,每次生成的随机数序列将是确定性的,这意味着可以在不同的运行中获得相同的随机数序列,从而使实验可复现。 在机器学习中,确保实验的可复现性是

    2024年02月05日
    浏览(64)
  • Pytorch autograd.grad与autograd.backward详解

    平时在写 Pytorch 训练脚本时,都是下面这种无脑按步骤走: 对用户屏蔽底层自动微分的细节,使得用户能够根据简单的几个 API 将模型训练起来。这对于初学者当然是极好的,也是 Pytorch 这几年一跃成为最流行的深度学习框架的主要原因:易用性。 但是,我们有时需要深究自

    2023年04月09日
    浏览(42)
  • 深入浅出Pytorch函数——torch.Tensor.backward

    分类目录:《深入浅出Pytorch函数》总目录 相关文章: · 深入浅出Pytorch函数——torch.Tensor 计算当前张量相对于图的梯度,该函数使用链式法则对图进行微分。如果张量不是一个标量(即其数据具有多个元素)并且需要梯度,则函数还需要指定梯度,指定的梯度应该是一个与

    2024年02月15日
    浏览(53)
  • 人工智能学习07--pytorch14--ResNet网络/BN/迁移学习详解+pytorch搭建

    亮点:网络结构特别深 (突变点是因为学习率除0.1?) 梯度消失 :假设每一层的误差梯度是一个小于1的数,则在反向传播过程中,每向前传播一层,都要乘以一个小于1的误差梯度。当网络越来越深的时候,相乘的这些小于1的系数越多,就越趋近于0,这样梯度就会越来越小

    2023年04月11日
    浏览(133)
  • 人工智能学习07--pytorch15(前接pytorch10)--目标检测:FPN结构详解

    backbone:骨干网络,例如cnn的一系列。(特征提取) (a)特征图像金字塔 检测不同尺寸目标。 首先将图片缩放到不同尺度,针对每个尺度图片都一次通过算法进行预测。 但是这样一来,生成多少个尺度就要预测多少次,训练效率很低。 (b)单一特征图 faster rcnn所采用的一种方式

    2023年04月12日
    浏览(66)
  • Pytorch反向传播——optimizer.zero_grad(), loss.backward(), optimizer.step() 作用

    在 PyTorch 中,optimizer.zero_grad() 用于清空优化器中的梯度。通常,在进行一次反向传播计算之前,我们需要先清空优化器中的梯度。这是因为 PyTorch 默认会在反向传播时累加梯度,而不是覆盖之前的梯度,因此我们需要先清空梯度,再进行反向传播计算。 具体来说,optimizer.

    2024年02月11日
    浏览(38)
  • Pytorch对机器学习模型的安全漏洞攻击方法之Fast Gradient Sign Attack(FGSM,快速梯度符号攻击)

    原论文:EXPLAINING AND HARNESSING ADVERSARIAL EXAMPLES 一般本人的习惯是先看论文熟悉它,然后代码去实现它,这样感觉要好点。因为论文讲解的比较全面和一些实验对比还有很多的引用等,另外大家知道好论文基本都是英文,所以对于英文弱点的伙伴们可能需要多花点时间去研读了

    2023年04月23日
    浏览(42)
  • 人工智能概论报告-基于PyTorch的深度学习手写数字识别模型研究与实践

    本文是我人工智能概论的课程大作业实践应用报告,可供各位同学参考,内容写的及其水,部分也借助了gpt自动生成,排版等也基本做好,大家可以参照。如果有需要word版的可以私信我,或者在评论区留下邮箱,我会逐个发给。word版是我最后提交的,已经调整统一了全文格

    2024年02月05日
    浏览(69)
  • 机器学习框架PyTorch

    机器学习框架PyTorch PyTorch简介 第一个PyTorch应用 PyTorch API PyTorch基本概念 使用PyTorch的流程 PyTorch张量 PyTorch数据集和数据加载器 PyTorch转换 TensorBoard PyTorch 自动求导(Autograd) torchvision数据集 PyTorch模型构建 PyTorch模型优化 PyTorch构建神经网络 PyTorch构建多层感知机(MLP) PyTorch构

    2024年02月01日
    浏览(35)
  • 人工智能学习07--pytorch20--目标检测:COCO数据集介绍+pycocotools简单使用

    如:天空 coco包含pascal voc 的所有类别,并且对每个类别的标注目标个数也比pascal voc的多。 一般使用coco数据集预训练好的权重来迁移学习。 如果仅仅针对目标检测object80类而言,有些图片并没有标注信息,或者有错误标注信息。所以在实际的训练过程中,需要对这些数据进行

    2024年02月12日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包