当前位置: 首页 > news >正文

PyTorch Autograd内部实现

原文:

克補 爆炸篇 25s (youtube.com)

必应视频 (bing.com)icon-default.png?t=N7T8https://www.bing.com/videos/riverview/relatedvideo?&q=PyTorch+autograd&qpvt=PyTorch+autograd&mid=1B8AD76943EFADD541E01B8AD76943EFADD541E0&&FORM=VRDGAR

前面只要有一个node的requires_grad为True,则后面所有node都要为True:

forward阶段,ctx里存放其backward操作需要的值,也就是forward时的部分input或output值;

requires_grad为False的(Tensor b),不会计算其梯度;

requires_grad为True,且is_leaf为Tree的,会将梯度累积到其grad成员上;

优化:如果is_leaf=False,则说明不需要该Tensor的grad,所以,grad_fn直接将output梯度传递给下一个grad_fn了,绕开对该Tensor的grad的更新;(节省一步梯度加和操作的时间,也节省一个grad数据存储空间)

用_version号来防止backward时用到的activation在之前发生改动;如果_version号跟本次backward源头的_version号不同了,则报错;

我:Pipeline并行,如果直接做,就会有这种报错出现;

如果是Add操作这种,压根不需要某些activation的值,所以这种值发生改动,不影响backward传递参数,因此就不会报错

每个运算,是一个独立的operator,对应backward也是独立的:

Tensor.detach(),用在什么情况:想保留结果值,但又想把原始计算图垃圾回收释放掉;新Tensor和老Tensor共享数据内存(data),但不在hold指向计算图的reference了(grad_fn=None)

 

http://www.lryc.cn/news/403564.html

相关文章:

  • 微信小程序 vant-weapp的 SwipeCell 滑动单元格 van-swipe-cell 滑动单元格不显示 和 样式问题 滑动后删除样式不显示
  • 3.4、matlab实现SGM/BM/SAD立体匹配算法计算视差图
  • 【瑞吉外卖 | day07】移动端菜品展示、购物车、下单
  • 前端Vue项目中腾讯地图SDK集成:经纬度与地址信息解析的实践
  • 鸿蒙开发StableDiffusion绘画应用
  • 华为OD机考题(HJ61 放苹果)
  • 浅谈Visual Studio 2022
  • spark 动态资源分配dynamicAllocation
  • 【C语言ffmpeg】打开第一个视频
  • 【Langchain大语言模型开发教程】模型、提示和解析
  • Flutter 中的基本数据类型:num、int 和 double
  • 基于Python+Django,开发的一个在线教育系统
  • 密码学原理精解【9】
  • 【Nacos】Nacos服务注册与发现 心跳检测机制源码解析
  • python 66 个冷知识 0720
  • 利用PyTorch进行模型量化
  • Android 小白菜鸟从入门到精通教程
  • php相关
  • uniapp上传功能用uni-file-picker实现
  • 【PPT笔记】1-3节 | 默认设置/快捷键/合并形状
  • Qt中的高分辨率及缩放处理
  • 电机泵盖机器人打磨去毛刺,选德国进口高精度主轴
  • Android init.rc各阶段的定义和功能
  • .net dataexcel 脚本公式 函数源码
  • HarmonyOS ArkUi @CustomDialog 和promptAction.openCustomDialog踩坑以及如何选择
  • Python面试题:详细讲解Python的多线程与多进程编程问题
  • 前端Canvas入门——用canvas写五子棋?
  • [PaddlePaddle飞桨] PaddleDetection-通用目标检测-小模型部署
  • Golang | Leetcode Golang题解之第239题滑动窗口最大值
  • 深度解析:在 React 中实现类似 Vue 的 KeepAlive 组件