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程序中操作文件之isatty()方法的使用教程
May 24 Python
Python实现列表转换成字典数据结构的方法
Mar 11 Python
Python实现的插入排序算法原理与用法实例分析
Nov 22 Python
Python快速查找list中相同部分的方法
Jun 27 Python
python利用selenium进行浏览器爬虫
Apr 25 Python
使用PyOpenGL绘制三维坐标系实例
Dec 24 Python
将数据集制作成VOC数据集格式的实例
Feb 17 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
Oct 22 Python
python3 re返回形式总结
Nov 20 Python
python unichr函数知识点总结
Dec 16 Python
vue.js刷新当前页面的实例讲解
Dec 29 Python
python实现监听键盘
Apr 26 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 函数中使用static的说明
2012/06/01 PHP
三个类概括PHP的五种设计模式
2012/09/05 PHP
如何使用PHP实现javascript的escape和unescape函数
2013/06/29 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
2013/06/29 PHP
使用PHP备份MYSQL数据的多种方法
2014/01/15 PHP
PHP中4个加速、缓存扩展的区别和选用建议
2014/03/12 PHP
浅析PHP程序设计中的MVC编程思想
2014/07/28 PHP
Laravel模板引擎Blade中section的一些标签的区别介绍
2015/02/10 PHP
PHP精确到毫秒秒杀倒计时实例详解
2019/03/14 PHP
Span元素的width属性无效果原因及解决方案
2010/01/15 Javascript
js 异步处理进度条
2010/04/01 Javascript
JavaScript创建一个object对象并操作对象属性的用法
2015/03/23 Javascript
javascript实现画不相交的圆
2015/04/07 Javascript
详解springmvc 接收json对象的两种方式
2016/12/06 Javascript
Javascript实现跨域后台设置拦截的方法详解
2017/08/04 Javascript
vuex中使用对象展开运算符的示例
2017/09/25 Javascript
如何用input标签和jquery实现多图片的上传和回显功能
2018/05/16 jQuery
NodeJS使用Range请求实现下载功能的方法示例
2018/10/12 NodeJs
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
[02:56]DOTA2矮人直升机 英雄基础教程
2013/11/26 DOTA
python实现12306火车票查询器
2017/04/20 Python
详解Django+uwsgi+Nginx上线最佳实战
2019/03/14 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
python能自学吗
2020/06/18 Python
python3排序的实例方法
2020/10/20 Python
css3的图形3d翻转效果应用示例
2014/04/08 HTML / CSS
细说CSS3中box属性中的overflow-x属性和overflow-y属性值的效果
2014/07/21 HTML / CSS
阿根廷旅游网站:almundo阿根廷
2018/02/12 全球购物
澳大利亚100%丝绸多彩度假装商店:TheSwankStore
2019/09/04 全球购物
高中生的学习总结自我鉴定
2013/10/26 职场文书
行政司机岗位职责
2015/04/10 职场文书
资料员岗位职责范本
2015/04/13 职场文书
幼儿园托班教育随笔
2015/08/14 职场文书
2016年“12.3”国际残疾人日活动总结
2016/04/01 职场文书
七年级作文之游记
2019/12/11 职场文书
Python实现视频中添加音频工具详解
2021/12/06 Python