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写xml文件的操作实例
Oct 05 Python
Python中的is和id用法分析
Jan 26 Python
Python基于二分查找实现求整数平方根的方法
May 12 Python
Python读取文件内容的三种常用方式及效率比较
Oct 07 Python
Python反爬虫技术之防止IP地址被封杀的讲解
Jan 09 Python
PyQt5固定窗口大小的方法
Jun 18 Python
python实现kNN算法识别手写体数字的示例代码
Aug 16 Python
Python数据分析模块pandas用法详解
Sep 04 Python
如何基于Python实现电子邮件的发送
Dec 16 Python
Python requests获取网页常用方法解析
Feb 20 Python
浅谈Python爬虫原理与数据抓取
Jul 21 Python
Python使用pyenv实现多环境管理
Feb 05 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生成HTML静态页面实例代码
2008/08/31 PHP
php foreach 使用&(与运算符)引用赋值要注意的问题
2010/02/16 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
2019/10/17 PHP
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
2009/11/12 Javascript
jquery获取被勾选的checked(选中)的那一行的3列和4列的值
2013/07/04 Javascript
jQuery简单实现验证邮箱格式
2015/07/15 Javascript
BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
2016/06/13 Javascript
JavaScript作用域示例详解
2016/07/07 Javascript
Bootstrapvalidator校验、校验清除重置的实现代码(推荐)
2016/09/28 Javascript
Vue 实用分页paging实例代码
2017/04/12 Javascript
Angular 4.x 路由快速入门学习
2017/05/03 Javascript
ExtJs整合Echarts的示例代码
2018/02/27 Javascript
vue 实现全选全不选的示例代码
2018/03/29 Javascript
JavaScript中常见内置函数用法示例
2018/05/14 Javascript
详解element-ui中form验证杂记
2019/03/04 Javascript
JavaScript和TypeScript中的void的具体使用
2019/09/12 Javascript
Python实现的寻找前5个默尼森数算法示例
2018/03/25 Python
详解Python3.6安装psutil模块和功能简介
2018/05/30 Python
Python 修改列表中的元素方法
2018/06/26 Python
Python基于opencv实现的简单画板功能示例
2019/03/04 Python
python Pandas如何对数据集随机抽样
2019/07/29 Python
python文档字符串(函数使用说明)使用详解
2019/07/30 Python
tensorflow 实现从checkpoint中获取graph信息
2020/02/10 Python
利用CSS3的checked伪类实现OL的隐藏显示的方法
2010/12/18 HTML / CSS
大女孩胸罩:Big Girls Bras
2016/12/15 全球购物
ASOS比利时:英国线上零售商及自有品牌
2018/07/29 全球购物
高校自主招生自荐信
2013/12/09 职场文书
党在我心中演讲稿
2014/09/02 职场文书
学习十八大宣传标语
2014/10/09 职场文书
学生抄作业检讨书(2篇)
2014/10/17 职场文书
北京英文导游词
2015/02/12 职场文书
廉洁自律承诺书范文
2015/04/28 职场文书
食品安全责任书范本
2015/05/09 职场文书
小学英语教学反思范文
2016/02/15 职场文书
python pyhs2 的安装操作
2021/04/07 Python
html+css实现文字折叠特效实例
2021/06/02 HTML / CSS