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持久性管理pickle模块详细介绍
Feb 18 Python
python之文件的读写和文件目录以及文件夹的操作实现代码
Aug 28 Python
python逐行读写txt文件的实例讲解
Apr 03 Python
解决django同步数据库的时候app models表没有成功创建的问题
Aug 09 Python
Django获取应用下的所有models的例子
Aug 30 Python
python获取Linux发行版名称
Aug 30 Python
Django 简单实现分页与搜索功能的示例代码
Nov 07 Python
TensorFlow 多元函数的极值实例
Feb 10 Python
pandas中read_csv、rolling、expanding用法详解
Apr 21 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
Oct 21 Python
python hmac模块验证客户端的合法性
Nov 07 Python
详解使用scrapy进行模拟登陆三种方式
Feb 21 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
微信支付开发教程(一)微信支付URL配置
2014/05/28 PHP
php实现文件下载代码分享
2014/08/19 PHP
php动态绑定变量的用法
2015/06/16 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
使用jQuery的ajax功能实现的RSS Reader 代码
2009/09/03 Javascript
javascript 多浏览器 事件大全
2010/03/23 Javascript
javascript检测浏览器flash版本的实现代码
2011/12/06 Javascript
分享一个我自己写的ToolTip提示插件(附源码)
2013/01/20 Javascript
js文件Cookie存取值示例代码
2014/02/20 Javascript
js定时调用方法成功后并停止调用示例
2014/04/08 Javascript
PHP开发者必须掌握的6个关键字
2014/04/14 Javascript
js操作输入框中选择内容兼容IE及其他主流浏览器
2014/04/22 Javascript
javascript异步编程代码书写规范Promise学习笔记
2015/02/11 Javascript
动态加载jQuery的两种方法实例分析
2015/07/17 Javascript
纯JS代码实现一键分享功能
2016/04/20 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
2017/09/19 jQuery
Vue中v-show添加表达式的问题(判断是否显示)
2018/03/26 Javascript
vue将毫秒数转化为正常日期格式的实例
2018/09/16 Javascript
详解关于Vue版本不匹配问题(Vue packages version mismatch)
2018/09/17 Javascript
微信小程序实现通讯录列表展开收起
2020/11/18 Javascript
[02:39]DOTA2英雄基础教程 天怒法师
2013/11/29 DOTA
[07:03]显微镜下的DOTA2第九期——430圣堂刺客杀戮秀
2014/06/20 DOTA
[48:11]完美世界DOTA2联赛 Magma vs GXR 第二场 11.07
2020/11/10 DOTA
用tensorflow搭建CNN的方法
2018/03/05 Python
python使用matplotlib库生成随机漫步图
2018/08/27 Python
python实现公司年会抽奖程序
2019/01/22 Python
Python startswith()和endswith() 方法原理解析
2020/04/28 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
2020/10/21 Python
几个Linux面试题笔试题
2016/08/01 面试题
便利店投资创业计划书
2014/02/08 职场文书
安全生产标语大全
2014/10/06 职场文书
小升初自荐信怎么写
2015/03/26 职场文书
小学班主任研修日志
2015/11/13 职场文书
财务年终工作总结大全
2019/06/20 职场文书
JavaScript 反射学习技巧
2021/10/16 Javascript
muduo TcpServer模块源码分析
2022/04/26 Redis