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的迭代器和生成器使用实例
Jan 14 Python
Python中将字典转换为XML以及相关的命名空间解析
Oct 15 Python
从局部变量和全局变量开始全面解析Python中变量的作用域
Jun 16 Python
浅谈python字典多键值及重复键值的使用
Nov 04 Python
Python基于回溯法子集树模板解决旅行商问题(TSP)实例
Sep 05 Python
python程序封装为win32服务的方法
Mar 07 Python
Python实现查找二叉搜索树第k大的节点功能示例
Jan 24 Python
Python 模拟生成动态产生验证码图片的方法
Feb 01 Python
Win 10下Anaconda虚拟环境的教程
May 18 Python
Python selenium环境搭建实现过程解析
Sep 08 Python
python 带时区的日期格式化操作
Oct 23 Python
Python实现批量自动整理文件
Mar 16 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/03/13 PHP
js操作二级联动实现代码
2010/07/27 Javascript
javascript smipleChart 简单图标类
2011/01/12 Javascript
form表单中去掉默认的enter键提交并绑定js方法实现代码
2013/04/01 Javascript
Javascript表格翻页效果的具体实现
2013/10/05 Javascript
jquery中获得元素尺寸和坐标的方法整理
2014/05/18 Javascript
JSONP之我见
2015/03/24 Javascript
JavaScript中的anchor()方法使用详解
2015/06/08 Javascript
js实现的简单radio背景颜色选择器代码
2015/08/18 Javascript
javascript中日期函数new Date()的浏览器兼容性问题
2015/09/05 Javascript
JSON+Jquery省市区三级联动
2016/01/13 Javascript
微信小程序 http请求详细介绍
2016/10/09 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
2016/12/14 Javascript
浅谈angularjs依赖服务注入写法的注意点
2017/04/24 Javascript
js禁止表单重复提交
2017/08/29 Javascript
浅谈JavaScript find 方法不支持IE的问题
2017/09/28 Javascript
vue-cli+webpack项目 修改项目名称的方法
2018/02/28 Javascript
微信小程序模板template简单用法示例
2018/12/04 Javascript
js中实例与对象的区别讲解
2019/01/21 Javascript
vue.js 解决v-model让select默认选中不生效的问题
2020/07/28 Javascript
Vue自定义多选组件使用详解
2020/09/08 Javascript
python中正则表达式的使用详解
2014/10/17 Python
python 列表,数组和矩阵sum的用法及区别介绍
2018/06/28 Python
Python中return self的用法详解
2018/07/27 Python
pycharm远程开发项目的实现步骤
2019/01/20 Python
Python 实现文件打包、上传与校验的方法
2019/02/13 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
2019/08/30 Python
CSS3实现DIV圆角效果完整代码
2012/10/10 HTML / CSS
英国复古服装和球衣购买网站:3Retro Football
2018/07/09 全球购物
创业计划书如何吸引他人眼球
2014/01/10 职场文书
学生感冒英文请假条
2014/02/04 职场文书
我的祖国演讲稿
2014/05/04 职场文书
二手车转让协议书
2015/01/29 职场文书
幼师求职自荐信
2015/03/26 职场文书
食品质检员岗位职责
2015/04/08 职场文书
担保书怎么写 ?
2019/04/22 职场文书