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中将单词首字母大写的capitalize()方法
May 18 Python
Python PyQt5实现的简易计算器功能示例
Aug 23 Python
Python数据结构之双向链表的定义与使用方法示例
Jan 16 Python
Python实现获取本地及远程图片大小的方法示例
Jul 21 Python
使用python验证代理ip是否可用的实现方法
Jul 25 Python
Python sorted函数详解(高级篇)
Sep 18 Python
python使用 zip 同时迭代多个序列示例
Jul 06 Python
Python K最近邻从原理到实现的方法
Aug 15 Python
Python完全识别验证码自动登录实例详解
Nov 24 Python
哪种Python框架适合你?简单介绍几种主流Python框架
Aug 04 Python
Python使用Selenium模拟浏览器自动操作功能
Sep 08 Python
Django中celery的使用项目实例
Jul 07 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
利用discuz自带通行证整合dedecms的方法以及文件下载
2007/03/06 PHP
php格式化工具Beautify PHP小小BUG
2008/04/24 PHP
CodeIgniter CLI模式简介
2014/06/17 PHP
php遍历目录下文件并按修改时间排序操作示例
2019/07/12 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
2019/10/16 PHP
JavaScript 常用函数库详解
2009/10/21 Javascript
Javascript添加监听与删除监听用法详解
2014/12/19 Javascript
基于jQuery实现搜索关键字自动匹配功能
2020/03/26 Javascript
JS禁用页面上所有控件的实现方法(附demo源码下载)
2015/12/17 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
2017/02/14 Javascript
js轮播图透明度切换(带上下页和底部圆点切换)
2017/04/27 Javascript
详解react、redux、react-redux之间的关系
2018/04/11 Javascript
vue+Element实现搜索关键字高亮功能
2019/05/28 Javascript
[02:10]DOTA2亚洲邀请赛 EG战队出场宣传片
2015/02/07 DOTA
[02:51]DOTA2 Supermajor小组分组对阵抽签仪式
2018/06/01 DOTA
[54:17]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第二场 1月10日
2021/03/11 DOTA
Python写入数据到MP3文件中的方法
2015/07/10 Python
Python编程实现的简单神经网络算法示例
2018/01/26 Python
解决python中使用PYQT时中文乱码问题
2019/06/17 Python
使用Python中的reduce()函数求积的实例
2019/06/28 Python
python字典的setdefault的巧妙用法
2019/08/07 Python
Python坐标轴操作及设置代码实例
2020/06/04 Python
详解python tcp编程
2020/08/24 Python
介绍一下Ruby的特点
2013/01/20 面试题
产品销售员岗位职责
2013/12/18 职场文书
男方父母婚礼答谢词
2014/01/25 职场文书
大专生找工作自荐书
2014/06/10 职场文书
信用卡工资证明格式
2014/09/13 职场文书
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
坚守艰苦奋斗精神坚决反对享乐主义整改措施
2014/09/17 职场文书
2014教师评职称工作总结
2014/11/10 职场文书
2015年车间管理工作总结
2015/07/23 职场文书
jQuery实现影院选座订座效果
2021/04/13 jQuery
JavaScript中时间格式化新思路toLocaleString()
2021/11/07 Javascript
WCG2010 星际争霸决赛 Flash vs Goojila 1 星际经典比赛回顾
2022/04/01 星际争霸