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多维/嵌套字典数据无限遍历的实现
Nov 04 Python
Python Queue模块详细介绍及实例
Dec 27 Python
Python列表切片用法示例
Apr 19 Python
python多进程和多线程究竟谁更快(详解)
May 29 Python
python实现按长宽比缩放图片
Jun 07 Python
python使用epoll实现服务端的方法
Oct 16 Python
python 找出list中最大或者最小几个数的索引方法
Oct 30 Python
Python进阶之自定义对象实现切片功能
Jan 07 Python
Python实现计算对象的内存大小示例
Jul 10 Python
Python标准库shutil模块使用方法解析
Mar 10 Python
python如何调用java类
Jul 05 Python
python机器学习实现oneR算法(以鸢尾data为例)
Mar 03 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 数据结构 算法描述 冒泡排序 bubble sort
2011/07/10 PHP
PHP错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法
2014/06/23 PHP
PHP数组相关函数汇总
2015/03/24 PHP
PHP简单读取PDF页数的实现方法
2016/07/21 PHP
php实现当前页面点击下载文件的实例代码
2016/11/16 PHP
iframe异步加载实现点击左边菜单加载右边内容实例讲解
2013/03/04 Javascript
jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
2013/04/08 Javascript
js计算两个时间之间天数差的实例代码
2013/11/19 Javascript
Javascript setInterval的两种调用方法(实例讲解)
2013/11/29 Javascript
两个数组去重的JS代码
2013/12/04 Javascript
JQuery实现绚丽的横向下拉菜单
2013/12/19 Javascript
jQuery删除节点的三个方法即remove()detach()和empty()
2013/12/27 Javascript
JS图片无缝、平滑滚动代码
2014/03/11 Javascript
JS替换字符串中字符即替换全部而不是第一个
2014/06/04 Javascript
Node.js+ES6+dropload.js实现移动端下拉加载实例
2017/06/01 Javascript
动态创建Angular组件实现popup弹窗功能
2017/09/15 Javascript
js断点调试心得分享(必看篇)
2017/12/08 Javascript
给Python中的MySQLdb模块添加超时功能的教程
2015/05/05 Python
Python设计模式之简单工厂模式实例详解
2019/01/22 Python
利用python实现汉字转拼音的2种方法
2019/08/12 Python
解决python明明pip安装成功却找不到包的问题
2019/08/28 Python
详解python播放音频的三种方法
2019/09/23 Python
pytorch实现从本地加载 .pth 格式模型
2020/02/14 Python
Python实现ATM系统
2020/02/17 Python
Django serializer优化类视图的实现示例
2020/07/16 Python
游戏商店:Eneba
2020/04/25 全球购物
求职者应聘的自我评价
2013/10/16 职场文书
美容师的职业规划书
2013/12/27 职场文书
广场舞大赛策划方案
2014/05/31 职场文书
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
2014政府领导班子对照检查材料思想汇报(3篇)
2014/09/26 职场文书
2016年离婚协议书范文
2016/03/18 职场文书
《飘》英文读后感五篇
2019/10/11 职场文书
Axios代理配置及封装响应拦截处理方式
2022/04/07 Vue.js
Golang 实现WebSockets
2022/04/24 Golang
面试官问我Mysql的存储引擎了解多少
2022/08/05 MySQL