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使用心得之获得github代码库列表
Jun 25 Python
python操作mongodb根据_id查询数据的实现方法
May 20 Python
Python基于Tkinter实现的记事本实例
Jun 17 Python
Python实现多线程HTTP下载器示例
Feb 11 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
Feb 13 Python
详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
Apr 26 Python
python使用Matplotlib绘制分段函数
Sep 25 Python
PYTHON EVAL的用法及注意事项解析
Sep 06 Python
PyQt5 界面显示无响应的实现
Mar 26 Python
简单了解pytest测试框架setup和tearDown
Apr 14 Python
Python如何操作docker redis过程解析
Aug 10 Python
Python 机器学习工具包SKlearn的安装与使用
May 14 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安装xdebug/php安装pear/phpunit详解步骤(图)
2013/12/22 PHP
PHP CURL使用详解
2019/03/21 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
如何在Web页面上直接打开、编辑、创建Office文档
2007/03/12 Javascript
javascript的onchange事件与jQuery的change()方法比较
2009/09/28 Javascript
理解Javascript_12_执行模型浅析
2010/10/18 Javascript
jquery构造器的实现代码小结
2011/05/16 Javascript
原生JS可拖动弹窗效果实例代码
2013/11/09 Javascript
浅析基于WEB前端页面的页面内容搜索的实现思路
2014/06/10 Javascript
jquery实现点击查看更多内容控制段落文字展开折叠效果
2015/08/06 Javascript
jQuery简单实现提交数据出现loading进度条的方法
2016/03/29 Javascript
15款最好的Bootstrap在线编辑器
2016/08/03 Javascript
vue构建单页面应用实战
2017/04/10 Javascript
Javascript实现base64的加密解密方法示例
2017/06/27 Javascript
vue页面加载闪烁问题的解决方法
2018/03/28 Javascript
vue自定义全局共用函数详解
2018/09/18 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
2018/10/10 Javascript
Vue中Table组件Select的勾选和取消勾选事件详解
2019/03/19 Javascript
vue 组件中使用 transition 和 transition-group实现过渡动画
2019/07/09 Javascript
Python 文件管理实例详解
2015/11/10 Python
Android应用开发中Action bar编写的入门教程
2016/02/26 Python
python的else子句使用指南
2016/02/27 Python
Python从单元素字典中获取key和value的实例
2018/12/31 Python
python 将字符串中的数字相加求和的实现
2019/07/18 Python
python语言的优势是什么
2020/06/17 Python
html5 canvas-2.用canvas制作一个猜字母的小游戏
2013/01/07 HTML / CSS
文明宿舍获奖感言
2014/02/07 职场文书
致100米运动员广播稿
2014/02/14 职场文书
公司办公室岗位职责
2014/03/19 职场文书
旅游专业毕业生自荐书
2014/06/30 职场文书
党员个人查摆剖析材料
2014/10/16 职场文书
自主招生推荐信格式模板
2015/03/24 职场文书
《和时间赛跑》读后感3篇
2019/12/16 职场文书
一文搞懂如何实现Go 超时控制
2021/03/30 Python
修改并编译golang源码的操作步骤
2021/07/25 Golang
python pandas 解析(读取、写入)CSV 文件的操作方法
2022/12/24 Python