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 相关文章推荐
在Django的模板中使用认证数据的方法
Jul 23 Python
python实现rsa加密实例详解
Jul 19 Python
详解Python实现多进程异步事件驱动引擎
Aug 25 Python
在Python中增加和插入元素的示例
Nov 01 Python
Django框架封装外部函数示例
May 28 Python
python设计tcp数据包协议类的例子
Jul 23 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
Aug 13 Python
python+OpenCV实现图像拼接
Mar 05 Python
python爬虫开发之使用python爬虫库requests,urllib与今日头条搜索功能爬取搜索内容实例
Mar 10 Python
python 画条形图(柱状图)实例
Apr 24 Python
Python基于进程池实现多进程过程解析
Apr 30 Python
完美解决keras 读取多个hdf5文件进行训练的问题
Jul 01 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
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
2017/03/15 PHP
php取出数组单个值的方法
2018/03/12 PHP
javascript 自动转到命名锚记
2009/01/10 Javascript
几个常用的JavaScript字符串处理函数 - split()、join()、substring()和indexOf()
2009/06/02 Javascript
(jQuery,mootools,dojo)使用适合自己的编程别名命名
2010/09/14 Javascript
JavaScript 放大镜 放大倍率和视窗尺寸
2011/05/09 Javascript
javascript 进阶篇1 正则表达式,cookie管理,userData
2012/03/14 Javascript
js验证是否为数字的总结
2013/04/14 Javascript
document.addEventListener使用介绍
2014/03/07 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
2014/06/09 Javascript
分享20款美化网站的 jQuery Lightbox 灯箱插件
2014/10/10 Javascript
浅谈jquery回调函数callback的使用
2015/01/30 Javascript
jQuery实现文件上传进度条特效
2015/08/12 Javascript
jquery实现鼠标点击后展开列表内容的导航栏效果
2015/09/14 Javascript
BootStrap table表格插件自适应固定表头(超好用)
2016/08/24 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
2016/12/28 Javascript
基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法
2018/12/09 Javascript
Javascript实现贪吃蛇小游戏(含详细注释)
2020/10/23 Javascript
[01:11:21]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第一场 3月6日
2021/03/11 DOTA
Python内置数据类型详解
2014/08/18 Python
Python中的生成器和yield详细介绍
2015/01/09 Python
Python生成随机密码的方法
2017/06/16 Python
pygame游戏之旅 添加icon和bgm音效的方法
2018/11/21 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
2019/04/05 Python
Python中的引用知识点总结
2019/05/20 Python
在django中实现页面倒数几秒后自动跳转的例子
2019/08/16 Python
Python通过正则库爬取淘宝商品信息代码实例
2020/03/02 Python
美国滑雪和滑雪板商店:Buckman
2018/03/03 全球购物
化学专业毕业生自荐信
2013/11/15 职场文书
六五普法宣传标语
2014/10/06 职场文书
机关党员三严三实心得体会
2014/10/13 职场文书
群众对十八届四中全会的期盼
2014/10/17 职场文书
一年级班主任工作总结2014
2014/11/08 职场文书
2014年应急管理工作总结
2014/11/26 职场文书
2016年清明节期间群众祭祀活动工作总结
2016/04/01 职场文书
Python中的pprint模块
2021/11/27 Python