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使用tablib生成excel文件的简单实现方法
Mar 16 Python
Python黑魔法@property装饰器的使用技巧解析
Jun 16 Python
Python+tkinter使用40行代码实现计算器功能
Jan 30 Python
Python get获取页面cookie代码实例
Sep 12 Python
Python中实例化class的执行顺序示例详解
Oct 14 Python
python之信息加密题目详解
Jun 26 Python
python字符串切割:str.split()与re.split()的对比分析
Jul 16 Python
对Python生成器、装饰器、递归的使用详解
Jul 19 Python
opencv-python 提取sift特征并匹配的实例
Dec 09 Python
Python3 读取Word文件方式
Feb 13 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
Feb 15 Python
Python3爬虫ChromeDriver的安装实例
Feb 06 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
sphinx增量索引的一个问题
2011/06/14 PHP
php导出word文档与excel电子表格的简单示例代码
2014/03/08 PHP
ExtJS下grid的一些属性说明
2009/12/13 Javascript
使用Firebug对js进行断点调试的图文方法
2011/04/02 Javascript
js 函数的副作用分析
2011/08/23 Javascript
JS基于FileSystemObject创建一个指定路径的TXT文本文件
2015/08/05 Javascript
js计算文本框输入的字符数
2015/10/23 Javascript
浅析javascript异步执行函数导致的变量变化问题解决思路
2016/05/13 Javascript
jQuery基础_入门必看知识点
2016/07/04 Javascript
Vue.js开发环境搭建
2016/11/10 Javascript
浅谈js-FCC算法Friendly Date Ranges(详解)
2017/04/10 Javascript
JavaScript基础之this详解
2017/06/04 Javascript
用vue-cli开发vue时的代理设置方法
2018/09/20 Javascript
vue-router 手势滑动触发返回功能
2018/09/30 Javascript
解决nuxt 自定义全局方法,全局属性,全局变量的问题
2020/11/05 Javascript
[07:59]2014DOTA2叨叨刀塔 林熊猫称被邀请赛现场盛况震撼
2014/07/21 DOTA
Python中apply函数的用法实例教程
2014/07/31 Python
python 2.7.14安装图文教程
2018/04/08 Python
Python简易版图书管理系统
2019/08/12 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
2020/01/25 Python
Keras使用tensorboard显示训练过程的实例
2020/02/15 Python
python 图像增强算法实现详解
2021/01/24 Python
Sixt美国租车:高端豪华车型自驾体验
2017/09/02 全球购物
戴森西班牙官网:Dyson西班牙
2020/02/04 全球购物
2014年庆元旦活动方案
2014/02/15 职场文书
大学生会计职业生涯规划范文
2014/02/28 职场文书
党员公开承诺书内容
2014/05/20 职场文书
学校感恩节活动策划方案
2014/10/06 职场文书
2014最新预备党员思想汇报范文:中国梦,我的梦
2014/10/25 职场文书
安全承诺书
2015/01/19 职场文书
销售员岗位职责
2015/02/10 职场文书
毛主席纪念堂观后感
2015/06/17 职场文书
开学典礼校长致辞
2015/07/29 职场文书
心得体会格式及范文
2016/01/25 职场文书
从np.random.normal()到正态分布的拟合操作
2021/06/02 Python
JUnit5常用注解的使用
2021/07/02 Java/Android