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实现的下载8000首儿歌的代码分享
Nov 21 Python
Python中的多重装饰器
Apr 11 Python
Python编程之event对象的用法实例分析
Mar 23 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
Jul 10 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
Oct 11 Python
对Python 除法负数取商的取整方式详解
Dec 12 Python
Python元组知识点总结
Feb 18 Python
python手写均值滤波
Feb 19 Python
基于打开pycharm有带图片md文件卡死问题的解决
Apr 24 Python
在Django中自定义filter并在template中的使用详解
May 19 Python
容易被忽略的Python内置类型
Sep 03 Python
Jupyter安装链接aconda实现过程图解
Nov 02 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
苏联队长,苏联超人蝙蝠侠,这些登场的“山寨”英雄真的很严肃
2020/04/09 欧美动漫
PHP 文件扩展名 获取函数
2009/06/03 PHP
PHP 木马攻击防御技巧
2009/06/13 PHP
Windows2003下php5.4安装配置教程(IIS)
2016/06/30 PHP
php连接微软MSSQL(sql server)完全攻略
2016/11/27 PHP
Zend Framework入门教程之Zend_Config组件用法详解
2016/12/09 PHP
thinkPHP5 ACL用户权限模块用法详解
2017/05/10 PHP
node.js中的events.emitter.removeListener方法使用说明
2014/12/10 Javascript
jquery动态添加删除(tr/td)
2015/02/09 Javascript
JS版元素周期表实现方法
2015/08/05 Javascript
你不知道的高性能JAVASCRIPT
2016/01/18 Javascript
js实现多图左右切换功能
2016/08/04 Javascript
前端程序员必须知道的高性能Javascript知识
2016/08/24 Javascript
AngularJS通过$http和服务器通信详解
2016/09/21 Javascript
基于Vue.js实现简单搜索框
2020/03/26 Javascript
jQuery插件echarts实现的单折线图效果示例【附demo源码下载】
2017/03/04 Javascript
jquery mobile实现可折叠的导航按钮
2017/03/11 Javascript
微信小程序开发之toast等弹框提示使用教程
2017/06/08 Javascript
其实你可以少写点if else与switch(推荐)
2019/01/10 Javascript
对vuex中store和$store的区别说明
2020/07/24 Javascript
Vue Elenent实现表格相同数据列合并
2020/11/30 Vue.js
[40:05]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第一局
2016/02/25 DOTA
python中的tcp示例详解
2018/12/09 Python
Python调用graphviz绘制结构化图形网络示例
2019/11/22 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
2020/02/29 Python
Python中Selenium库使用教程详解
2020/07/23 Python
python实现图书馆抢座(自动预约)功能的示例代码
2020/09/29 Python
突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)
2013/01/31 HTML / CSS
俄罗斯有趣和原创礼物网上商店:MagicMag
2019/08/01 全球购物
个人自荐书
2013/12/20 职场文书
高中生的自我鉴定范文
2014/01/24 职场文书
大家访活动实施方案
2014/03/10 职场文书
《毛主席在花山》教学反思
2014/04/20 职场文书
安全目标管理责任书
2014/07/25 职场文书
车辆管理制度范本
2015/08/05 职场文书
7个关于Python的经典基础案例
2021/11/07 Python