In [51]:

x = t.arange(0,3, requires_grad=True,dtype=t.float)
y = x**2 + x*2
z = y.sum()
z.backward() # 从z开始反向传播
x.grad

Out[51]:

tensor([2., 4., 6.])

In [52]:

x = t.arange(0,3, requires_grad=True,dtype=t.float)
y = x**2 + x*2
z = y.sum()
y_gradient = t.Tensor([1,1,1]) # dz/dy
y.backward(y_gradient) #从y开始反向传播
x.grad

Out[52]:

tensor([2., 4., 6.])

另外值得注意的是,只有对variable的操作才能使用autograd,如果对variable的data直接进行操作,将无法使用反向传播。除了对参数初始化,一般我们不会修改variable.data的值。

在PyTorch中计算图的特点可总结如下:

  • autograd根据用户对variable的操作构建其计算图。对变量的操作抽象为Function
  • 对于那些不是任何函数(Function)的输出,由用户创建的节点称为叶子节点,叶子节点的grad_fn为None。叶子节点中需要求导的variable,具有AccumulateGrad标识,因其梯度是累加的。
  • variable默认是不需要求导的,即requires_grad属性默认为False,如果某一个节点requires_grad被设置为True,那么所有依赖它的节点requires_grad都为True。
  • variable的volatile属性默认为False,如果某一个variable的volatile属性被设为True,那么所有依赖它的节点volatile属性都为True。volatile属性为True的节点不会求导,volatile的优先级比requires_grad高。
  • 多次反向传播时,梯度是累加的。反向传播的中间缓存会被清空,为进行多次反向传播需指定retain_graph=True来保存这些缓存。
  • 非叶子节点的梯度计算完之后即被清空,可以使用autograd.gradhook技术获取非叶子节点的值。
  • variable的grad与data形状一致,应避免直接修改variable.data,因为对data的直接操作无法利用autograd进行反向传播
  • 反向传播函数backward的参数grad_variables可以看成链式求导的中间结果,如果是标量,可以省略,默认为1
  • PyTorch采用动态图设计,可以很方便地查看中间层的输出,动态的设计计算图结构。

这些知识不懂大多数情况下也不会影响对pytorch的使用,但是掌握这些知识有助于更好的理解pytorch,并有效的避开很多陷阱

Pytorch:variable中grad属性和backward函数grad_variables参数的含义相关推荐

  1. vim函数跳转 php,求助!! vim-gvim中如何让其显示函数及其参数!!

    求助!! vim-gvim中如何让其显示函数及其参数!! (2012-06-05 02:25:34) 标签: 如何 杂谈 求助!! vim/gvim中如何让其显示函数及其参数!!用了一段时间的vim, ...

  2. main函数的参数的含义

    转载自:点击链接 链接2 加qq1126137994 微信:liu1126137994 一起学习更多技术!!! 最近学习服务器网络编程,遇到了一个问题,main函数的参数,特意整理资料记录之!!! 下 ...

  3. css中background-size属性cover、contain、100%的含义案例详解

    昨天学前端,看到 css中的background-size属性,忽然对cover.contain属性值有点蒙,具体到底什么显示效果有点糊涂. 看了菜鸟教程的解释,还是不太明白.于是自己做了一个案例来验 ...

  4. mysql yearweek 日期不准_Mysql 中,WEEK 与YEARWEEK函数的参数问题

    今天碰到一个问题,说在 mysql 里面, 要按周统计, 周的计算,是从 每周一到周日. 简单了写了下 SELECT WEEK (  date  ) SUM  (  sale  ) FROM 表 GR ...

  5. Mysql 中,WEEK 与YEARWEEK函数的参数问题

    2019独角兽企业重金招聘Python工程师标准>>> 今天碰到一个问题,说在 mysql 里面, 要按周统计, 周的计算,是从 每周一到周日. 简单了写了下 SELECT   WE ...

  6. linprog函数各参数的含义

    运筹学中经常会遇到线性规划问题,目标线性规划,对偶问题等,针对线性规划和对偶问题,可以直接MATLAB中的linprog函数来解决,linprog函数的原理类似于单纯形法 c=[-40 -30]; a ...

  7. opencv StereoBM函数各个参数的含义

    使用的opencv版本是4.5.4,StereoBM可设置的参数及其释意如下. /*匹配图像预处理*/bm->setPreFilterCap(63);//31//预处理滤波器的截断值,计算每个像 ...

  8. linux中grub,nomodest,quiet等参数的含义,进入启动项之后黑屏的可能原因

    1.双系统,选择启动项之后黑屏的可能原因 有可能是因为系统独立显卡的启动导致黑屏,这时如果在quiet splash之后,加上nomodeset,就可以告诉内核,系统启动过程中,暂时不运行图像驱动程序 ...

  9. shell 中 if then语句中会跟着-ne -ge之类的参数的含义

    if [ 1 -ne 1 ];then ... fi 这是指当1不等于1时执行then后的语句 -eq:等于 -ne:不等于 -le:小于等于 -ge:大于等于 -lt:小于 -gt:大于 转载于:h ...

最新文章

  1. 西农韦革宏组揭示甘草根系微生物群落分布及其与根内次级代谢产物之间的联系...
  2. Mysql报错Fatal error: Can#39;t open and lock privilege tables: Table #39;mysql.host#39; doesn#39;t...
  3. Scala基础教程(一):简介、环境安装
  4. 10月25日学习内容整理:数据操作:增加更新删除,单表查询操作
  5. CComQIPtr spCmdButton PutTag
  6. PyTorch中为什么需要使用squeeze()和unsqueeze()操作?
  7. Mangos源码分析(9):服务器公共组件实现之环形缓冲区
  8. 使用Maven导入MySQL驱动包遇到的问题
  9. WordPress教程 – WordPress新手指南(2021)
  10. 进度播报|广州地铁七号线全线29台盾构机全部完成始发
  11. 如何修改文件的编码格式
  12. RAW格式转存PNG图片
  13. 我的2023届秋招之旅
  14. 刘兴亮 -- IT博客-中国最具人气的IT博客-赛迪网IT人家园
  15. cgroup 分析之CPU和内存部分
  16. 日本人的姓及一些姓氏的读法(转)
  17. 计算机考研资料库!近五十所高校计算机考研资料分享!持续更新中!
  18. AICS188-Project6-Q1-Q3
  19. 【预测模型】统计的基本概念
  20. bootstrap4 知识总结

热门文章

  1. 免费在线PHP加密、解密、混淆源代码工具-toolfk.com
  2. 软工作业4:词频统计
  3. flex 布局下关于容器内成员 flex属性的理解
  4. MySql中的内外联结查询
  5. 【python】面向对象类的继承
  6. Java 面试高频提问知识点一
  7. linux下slow,慢查询日志的分析工具mysqlsla的使用
  8. 性能测试第一步——查看设备的硬件配置
  9. 计算机课玩游戏检讨500字,上电脑课玩游戏的检讨书范文
  10. gt designer2不能初始化字体管理器_Windows Terminal 1.1预览版发布:新增字体粗细、随开机启动等功能...