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简单的函数定义和用法实例
May 07 Python
pandas apply 函数 实现多进程的示例讲解
Apr 20 Python
django中模板的html自动转意方法
May 27 Python
django配置连接数据库及原生sql语句的使用方法
Mar 03 Python
不到40行代码用Python实现一个简单的推荐系统
May 10 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
Nov 08 Python
Python基于内置库pytesseract实现图片验证码识别功能
Feb 24 Python
python except异常处理之后不退出,解决异常继续执行的实现
Apr 25 Python
Python使用configparser读取ini配置文件
May 25 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
Jun 29 Python
PyTorch如何搭建一个简单的网络
Aug 24 Python
python3 hdf5文件 遍历代码
May 19 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使用递归生成文章树
2015/04/21 PHP
PHP+Mysql+jQuery实现发布微博程序 php篇
2015/10/15 PHP
php实现爬取和分析知乎用户数据
2016/01/26 PHP
php 实现一个字符串加密解密的函数实例代码
2016/11/01 PHP
JQuery.ajax传递中文参数的解决方法 推荐
2011/03/28 Javascript
HTML DOM的nodeType值介绍
2011/03/31 Javascript
JavaScript字符串String和Array操作的有趣方法
2012/12/18 Javascript
form表单中去掉默认的enter键提交并绑定js方法实现代码
2013/04/01 Javascript
图片动画横条广告带上下滚动的JS代码
2013/10/25 Javascript
iframe子父页面调用js函数示例
2013/11/07 Javascript
Javascript中String的常用方法实例分析
2015/06/13 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
2017/06/26 Javascript
写给vue新手们的vue渲染页面教程
2017/09/01 Javascript
JavaScript requestAnimationFrame动画详解
2017/09/14 Javascript
js利用递归与promise 按顺序请求数据的方法
2019/08/30 Javascript
JavaScript 严格模式(use strict)用法实例分析
2020/03/04 Javascript
[02:56]《DAC最前线》之国外战队抵达上海备战亚洲邀请赛
2015/01/28 DOTA
python使用PyFetion来发送短信的例子
2014/04/22 Python
Python实现的中国剩余定理算法示例
2017/08/05 Python
Python多继承顺序实例分析
2018/05/26 Python
pygame游戏之旅 添加游戏界面按键图形
2018/11/20 Python
浅谈pycharm出现卡顿的解决方法
2018/12/03 Python
Python当中的array数组对象实例详解
2019/06/12 Python
详解如何用TensorFlow训练和识别/分类自定义图片
2019/08/05 Python
利用OpenCV和Python实现查找图片差异
2019/12/19 Python
英国皇室御用百货:福南梅森(Fortnum & Mason)
2017/12/03 全球购物
Joie官方网上商店:购买服装和女装配饰
2018/06/05 全球购物
机电专业个人自荐信格式模板
2013/09/23 职场文书
幼儿园家长会欢迎词
2014/01/09 职场文书
高中军训感言200字
2014/02/23 职场文书
社会稳定风险评估方案
2014/06/02 职场文书
保护环境的标语
2014/06/09 职场文书
教师节主持词开场白
2015/05/29 职场文书
校园广播站开场白
2015/06/01 职场文书
导游词之阳朔遇龙河
2019/12/16 职场文书
SQLServer中JSON文档型数据的查询问题解决
2021/06/27 SQL Server