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实现可将字符转换成大写的tcp服务器实例
Apr 29 Python
Python实现读取邮箱中的邮件功能示例【含文本及附件】
Aug 05 Python
pandas Dataframe行列读取的实例
Jun 08 Python
利用python打开摄像头及颜色检测方法
Aug 03 Python
Python3内置模块之base64编解码方法详解
Jul 13 Python
在django view中给form传入参数的例子
Jul 19 Python
记录模型训练时loss值的变化情况
Jun 16 Python
python支持多继承吗
Jun 19 Python
python打包多类型文件的操作方法
Sep 21 Python
使用Python绘制台风轨迹图的示例代码
Sep 21 Python
Python+Xlwings 删除Excel的行和列
Dec 19 Python
Jupyter安装拓展nbextensions及解决官网下载慢的问题
Mar 03 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实现的连贯操作、链式操作实例
2014/07/08 PHP
php中get_meta_tags()、CURL与user-agent用法分析
2014/12/16 PHP
Yii2实现log输出到file及database的方法
2016/11/12 PHP
Yii2配置Nginx伪静态的方法
2017/05/05 PHP
PHP常见字符串操作函数与用法总结
2019/03/04 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
[原创]站长必须要知道的javascript广告代码
2007/05/30 Javascript
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
2009/10/25 Javascript
JavaScript之引用类型介绍
2012/08/10 Javascript
键盘KeyCode值列表汇总
2013/11/26 Javascript
jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别
2013/12/02 Javascript
JS动态调用方法名示例介绍
2013/12/18 Javascript
javascript中字体浮动效果的简单实例演示
2015/11/18 Javascript
jQuery实现简单的图片查看器
2020/09/11 Javascript
详解JavaScript表单验证(E-mail 验证)
2016/03/31 Javascript
AngularJS基础 ng-options 指令详解
2016/08/02 Javascript
jquery仿ps颜色拾取功能
2017/03/08 Javascript
详解在vue-cli中引用jQuery、bootstrap以及使用sass、less编写css
2017/11/08 jQuery
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
2019/01/18 Javascript
微信小程序websocket聊天室的实现示例代码
2019/02/12 Javascript
Python中摘要算法MD5,SHA1简介及应用实例代码
2018/01/09 Python
使用pip安装python库的多种方式
2019/07/31 Python
Pyqt5自适应布局实例
2019/12/13 Python
关于Python Tkinter Button控件command传参问题的解决方式
2020/03/04 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
2020/05/22 Python
英国女装网上商店:I Saw It First
2018/10/18 全球购物
计算机工程学院个人求职信
2013/10/05 职场文书
国际商务系学生个人的自我评价
2013/11/26 职场文书
5.1手机促销活动
2014/01/17 职场文书
推普周活动总结
2014/08/28 职场文书
财务科长个人对照检查材料
2014/09/18 职场文书
终止劳动合同协议书
2014/10/05 职场文书
MySQL中datetime时间字段的四舍五入操作
2021/10/05 MySQL
python创建字典及相关管理操作
2022/04/13 Python
SQL Server一个字符串拆分多行显示或者多行数据合并成一个字符串
2022/05/25 SQL Server
Java实现HTML转为Word的示例代码
2022/06/28 Java/Android