pytorch学习 – 反向传播backward

入门学习pytorch,在查看pytorch代码时对autograd的backard函数的使用和具体原理有些疑惑,在查看相关文章和学习后,简单说下我自身的理解:

backward函数属于torch.autograd函数库,在深度学习过程中对函数进行反向传播,计算输出变量关于输入变量的梯度。其输入变量自然应满足autograd 的要求,为Variable类型而不是tensor类型。

常见的使用方法为:

y.backward()

此时分为两种情况,当y为标量时,对y进行反向传播则不需要任何输入变量,个人理解是即默认此时y为网络输出的最后一层,其再没有上一层变量关于其的梯度了(因为为标量)。当y为非标量Variable类型时,根据pytorch中文官网的介绍,“backward的输入参数是 此operation的输出的值的梯度,backward的返回值是此operation输入值的梯度。”,对于这句话,我个人的理解是因为输出仍未非标量,所以其还在传播过程中,pytorch需要知道该变量上一级关于其的梯度,我们不妨设上一级的变量为L,我们神经网络的链式法则为:

可见,最终x的梯度即又上面的公式得出,dL/dy即是我们需要给定的backward函数的输入,dy/dx可由函数直接算出。

ok,举个简单的例子:

运行结果:

由提到的公式可以得到,

x.grads 为 dL/dy*dy/dx = [1,2,3,4,5]2x, 结果正如所料。

PS:

1.关于求梯度,只有我们定义的Variable的梯度会被放在 .grad 属性中,其余 Variable 的梯度不会被保存在 .grad 属性中

2.自己定义Variable的时候,记得Variable(Tensor, requires_grad = True),这样才会被求梯度,不然的话,是不会求梯度的

可以参考https://zhuanlan.zhihu.com/p/29923090

pytorch学习 -- 反向传播backward相关推荐

  1. Pytorch的反向传播backward()详解

    在Pytorch中,我们有时候会进行多个loss的回传,然而回传中,会发生一些错误.例如: RuntimeError: Trying to backward through the graph a s ...

  2. pytorch 入门学习反向传播-4

    pytorch 入门学习反向传播 反向传播 import numpy as np import matplotlib.pyplot as plt import torchdef forward(x): ...

  3. 人工智能-作业1:PyTorch实现反向传播

    人工智能-作业1:PyTorch实现反向传播 人工智能-作业1:PyTorch实现反向传播 环境配置: 计算过程 反向传播 PyTorch Autograd自动求导 人工智能-作业1:PyTorch实 ...

  4. 【2021-2022 春学期】人工智能-作业1:PyTorch实现反向传播

    1 安装pycharm,配置好python开发环境 PyCharm 安装教程(Windows) | 菜鸟教程 (runoob.com) 2 安装pytorch PyTorch 3 使用pytorch实 ...

  5. Pytorch(三) --反向传播

    整体上来说,和上一节的梯度下降法差不多,不过这次是用Pytorch实现的,调用了其中的一些方法. 需要注意的事项: ①Tensor中包含data和grad,其中data和grad也是Tensor.在更 ...

  6. pytorch loss反向传播出错

    今天在使用pytorch进行训练,在运行 loss.backward() 误差反向传播时出错 : RuntimeError: grad can be implicitly created only f ...

  7. 李宏毅《机器学习》笔记 DAY4 深度学习反向传播

    目录 深度学习的三个步骤 Step1:神经网络(Neural network) 完全连接前馈神经网络 全链接前馈网络 矩阵计算(Matrix Operation) Step2:模型评估(Goodnes ...

  8. 深度学习---反向传播算法

    装载原文:https://www.cnblogs.com/yeluzi/p/7418291.html 一. 一种基于矩阵运算快速计算神经网络输出的方法 在介绍反向传播之前,先介绍怎么利用矩阵运算快速的 ...

  9. 【Pytorch】反向传播为NaN报错的排查解决方法,RuntimeError: Function ‘BmmBackward0‘ returned nan values

    最近在训练模型的过程中,反复出现方向传播至为NaN的报错,报错信息如下所示: File "/home/fu/anaconda3/envs/torch/lib/python3.7/site-p ...

最新文章

  1. Android OkHttp的使用心得
  2. 【深度学习】我用 PyTorch 复现了 LeNet-5 神经网络(MNIST 手写数据集篇)!
  3. 非阻塞算法(Lock-Free)的实现
  4. P4550-收集邮票【期望dp】
  5. Windows 7镜像坎坷之路 - 都是Daemon Tools惹得祸
  6. 解决 jersey 单jar包 IME media type text/plain was not found.
  7. sql server 2012 复制数据库向导出现TransferDatabasesUsingSMOTransfer()异常
  8. linux下maxwell安装教程,Ubuntu下若干软件的安装方法
  9. 质性数据分析软件NVivo教程:自动编码情绪如何运作?
  10. PyTorch搭建ShuffleNet
  11. 计算机主机usb端口使用不了,电脑usb接口不能用,教您电脑usb接口不能用怎么办...
  12. 先人一步(小高读书笔记第一季)
  13. 模块化认知:演化如何自下而上涌现出智能?
  14. java 制作 winrar,windows 上java调用winrar压缩文件为rar 格式
  15. 看大品牌如何玩转小程序
  16. 微信小程序云开发 把时间戳转换成正常的时间格式上传到数据库中
  17. RNN结构,双向LSTM,Transformer, BERT对比分析
  18. 两个平板打天下-将中国看做一个城市圈,漉战移动互联网、高铁时代
  19. 也谈《人间正道是沧桑》中的破绽
  20. 视频教程-玩转2018微信小程序-微信开发

热门文章

  1. Java实现蓝桥杯VIP 算法训练 sign函数
  2. httpclient 设置短连接_关于HTTP的长连接和短连接那些事
  3. 4篇YouTube推荐系统论文, 一起来看看别人家的孩子
  4. Java RestTemplate 增加SSL证书
  5. 高等数学(预备知识之对数函数)
  6. teamviewer 使用数量到达上限_Teamviewer使用新问题之:同一账号在不同设备上使用已达上限...
  7. uniapp开发技术
  8. 游戏软件寄售官网源码带后台
  9. SQL 数字和字符串互转
  10. 华为智慧屏 鸿蒙如何,抛开鸿蒙 华为智慧屏V65作为电视合格吗?