Pytorch实现将模型的所有参数的梯度清0


Posted in Python onJune 24, 2020

有两种方式直接把模型的参数梯度设成0:

model.zero_grad()
optimizer.zero_grad()#当optimizer=optim.Optimizer(model.parameters())时,两者等效

如果想要把某一Variable的梯度置为0,只需用以下语句:

Variable.grad.data.zero_()

补充知识:PyTorch中在反向传播前为什么要手动将梯度清零?optimizer.zero_grad()的意义

optimizer.zero_grad()意思是把梯度置零,也就是把loss关于weight的导数变成0.

在学习pytorch的时候注意到,对于每个batch大都执行了这样的操作:

optimizer.zero_grad()             ## 梯度清零
preds = model(inputs)             ## inference
loss = criterion(preds, targets)  ## 求解loss
loss.backward()                   ## 反向传播求解梯度
optimizer.step()                  ## 更新权重参数

1、由于pytorch的动态计算图,当我们使用loss.backward()和opimizer.step()进行梯度下降更新参数的时候,梯度并不会自动清零。并且这两个操作是独立操作。

2、backward():反向传播求解梯度。

3、step():更新权重参数。

基于以上几点,正好说明了pytorch的一个特点是每一步都是独立功能的操作,因此也就有需要梯度清零的说法,如若不显示的进 optimizer.zero_grad()这一步操作,backward()的时候就会累加梯度。

以上这篇Pytorch实现将模型的所有参数的梯度清0就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python新手入门最容易犯的错误总结
Apr 24 Python
python解决js文件utf-8编码乱码问题(推荐)
May 02 Python
python实现决策树ID3算法的示例代码
May 30 Python
python实现三维拟合的方法
Dec 29 Python
python并发编程多进程 互斥锁原理解析
Aug 20 Python
树莓派4B+opencv4+python 打开摄像头的实现方法
Oct 18 Python
python3 xpath和requests应用详解
Mar 06 Python
使用sklearn对多分类的每个类别进行指标评价操作
Jun 11 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
Nov 02 Python
Python高阶函数与装饰器函数的深入讲解
Nov 10 Python
python3列表删除大量重复元素remove()方法的问题详解
Jan 04 Python
Python之多进程与多线程的使用
Feb 23 Python
你需要学会的8个Python列表技巧
Jun 24 #Python
pytorch实现查看当前学习率
Jun 24 #Python
在pytorch中动态调整优化器的学习率方式
Jun 24 #Python
CentOS 7如何实现定时执行python脚本
Jun 24 #Python
python tkiner实现 一个小小的图片翻页功能的示例代码
Jun 24 #Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
Jun 24 #Python
基于pytorch中的Sequential用法说明
Jun 24 #Python
You might like
《魔兽争霸3:重制版》更新 多项视觉效果调整
2020/05/04 魔兽争霸
php相当简单的分页类
2008/10/02 PHP
基于PHP导出Excel的小经验 完美解决乱码问题
2013/06/10 PHP
PHP6 中可能会出现的新特性预览
2014/04/04 PHP
php计算一个文件大小的方法
2015/03/30 PHP
Zend Framework动作助手Redirector用法实例详解
2016/03/05 PHP
支持ie与FireFox的剪切板操作代码
2009/09/28 Javascript
Extjs TriggerField在弹出窗口显示不出问题的解决方法
2010/01/08 Javascript
Prototype源码浅析 String部分(一)之有关indexOf优化
2012/01/15 Javascript
ajax中get和post的说明及使用与区别
2012/12/23 Javascript
jQuery插件实现屏蔽单个元素使用户无法点击
2013/04/12 Javascript
jQuery EasyUi实战教程之布局篇
2016/01/26 Javascript
详解基于angular路由的requireJs按需加载js
2017/01/20 Javascript
JS闭包用法实例分析
2017/03/27 Javascript
详解nodejs操作mongodb数据库封装DB类
2017/04/10 NodeJs
浅谈jQuery框架Ajax常用选项
2017/07/08 jQuery
详解在React中跨组件分发状态的三种方法
2018/08/09 Javascript
在Python中使用第三方模块的教程
2015/04/27 Python
对numpy中array和asarray的区别详解
2018/04/17 Python
python自定义函数实现一个数的三次方计算方法
2019/01/20 Python
快速排序的四种python实现(推荐)
2019/04/03 Python
python远程连接MySQL数据库
2019/04/19 Python
python实现飞机大战项目
2020/03/11 Python
基于Python爬取股票数据过程详解
2020/10/21 Python
Nice Kicks网上商店:ShopNiceKicks.com
2018/12/25 全球购物
澳大利亚人信任的清洁平台,您的私人管家:Jarvis
2020/12/25 全球购物
Swanson中国官网:美国斯旺森健康产品公司
2021/03/01 全球购物
璀璨的珍珠、密钉和个性化珠宝:Lily & Roo
2021/01/21 全球购物
StringBuilder和String的区别
2015/05/18 面试题
百货商场楼层班组长竞聘书
2014/03/31 职场文书
党员学习党的群众路线思想汇报(5篇)
2014/09/10 职场文书
2015年语文教研组工作总结
2015/05/23 职场文书
游戏开发中如何使用CocosCreator进行音效处理
2021/04/14 Javascript
JavaScript中的宏任务和微任务详情
2021/11/27 Javascript
Python必备技巧之字符数据操作详解
2022/03/23 Python
CSS中理解层叠性及权重如何分配
2022/12/24 HTML / CSS