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 中迭代器与生成器实例详解
Mar 29 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
May 25 Python
python pygame实现2048游戏
Nov 20 Python
Python中出现IndentationError:unindent does not match any outer indentation level错误的解决方法
Apr 18 Python
Python3 安装PyQt5及exe打包图文教程
Jan 08 Python
使用celery执行Django串行异步任务的方法步骤
Jun 06 Python
Python命令行参数解析工具 docopt 安装和应用过程详解
Sep 26 Python
利用python生成照片墙的示例代码
Apr 09 Python
python如何爬取动态网站
Sep 09 Python
Window10上Tensorflow的安装(CPU和GPU版本)
Dec 15 Python
python基于opencv 实现图像时钟
Jan 04 Python
Python与C++中梯度方向直方图的实现
Mar 17 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下通过POST还是GET来传值
2008/06/05 PHP
php 分页函数multi() discuz
2009/06/21 PHP
php中将一段数据存到一个txt文件中并显示其内容
2014/08/15 PHP
laravel框架关于搜索功能的实现
2018/03/15 PHP
PHP后台实现微信小程序登录
2018/08/03 PHP
js函数使用技巧之 setTimeout(function(){},0)
2009/02/09 Javascript
jquery自动完成插件(autocomplete)应用之PHP版
2009/12/15 Javascript
Jquery下判断Id是否存在的代码
2011/01/06 Javascript
基于js实现微信发送好友如何分享到朋友圈、微博
2015/11/30 Javascript
js字符串截取函数slice、substring和substr的比较
2016/05/17 Javascript
对javascript继承的理解
2016/10/11 Javascript
JS实现物体带缓冲的间歇运动效果示例
2016/12/22 Javascript
js仿微信公众平台打标签功能
2017/04/08 Javascript
vue安装和使用scss及sass与scss的区别详解
2018/10/15 Javascript
JavaScript的词法结构精华篇
2018/10/17 Javascript
JavaScript刷新页面的几种方法总结
2019/03/28 Javascript
基于jquery实现彩色投票进度条代码解析
2020/08/26 jQuery
Python正则表达式匹配中文用法示例
2017/01/17 Python
微信跳一跳辅助python代码实现
2018/01/05 Python
tensorflow训练中出现nan问题的解决
2018/02/10 Python
详谈pandas中agg函数和apply函数的区别
2018/04/20 Python
Python 读写文件的操作代码
2018/09/20 Python
Python读取txt某几列绘图的方法
2018/10/14 Python
Python 新建文件夹与复制文件夹内所有内容的方法
2018/10/27 Python
pygame游戏之旅 添加游戏界面按键图形
2018/11/20 Python
Python3-异步进程回调函数(callback())介绍
2020/05/02 Python
纯CSS3制作的鼠标悬停时边框旋转
2017/01/03 HTML / CSS
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
2012/12/09 HTML / CSS
Michael Kors英国官网:美国奢侈品品牌
2019/11/13 全球购物
小学生学习雷锋倡议书
2014/05/15 职场文书
学雷锋标兵事迹材料
2014/08/18 职场文书
勿忘国耻9.18演讲稿(经典篇)
2014/09/14 职场文书
中学生旷课检讨书2篇
2014/10/09 职场文书
2014年乡镇纪委工作总结
2014/12/19 职场文书
以权谋私检举信范文
2015/03/02 职场文书
电影开国大典观后感
2015/06/04 职场文书