浅谈PyTorch中in-place operation的含义


Posted in Python onJune 27, 2020

in-place operation在pytorch中是指改变一个tensor的值的时候,不经过复制操作,而是直接在原来的内存上改变它的值。可以把它成为原地操作符。

在pytorch中经常加后缀“_”来代表原地in-place operation,比如说.add_() 或者.scatter()。python里面的+=,*=也是in-place operation。

下面是正常的加操作,执行结束加操作之后x的值没有发生变化:

import torch
x=torch.rand(2) #tensor([0.8284, 0.5539])
print(x)
y=torch.rand(2)
print(x+y)   #tensor([1.0250, 0.7891])
print(x)    #tensor([0.8284, 0.5539])

下面是原地操作,执行之后改变了原来变量的值:

import torch
x=torch.rand(2) #tensor([0.8284, 0.5539])
print(x)
y=torch.rand(2)
x.add_(y)
print(x)    #tensor([1.1610, 1.3789])

在官方问文档中由这一段话:

如果你使用了in-place operation而没有报错的话,那么你可以确定你的梯度计算是正确的。

补充知识:PyTorch中nn.ReLU(inplace=True)中inplace的作用

我们用PyTorch搭建神经网络时,会遇到nn.ReLU(inplace=True),inplace=True是什么意思呢?

nn.Conv2d(64,192,kernel_size=3,stride=1,padding=1),
nn.ReLu(inpalce=True),# inplace为True,默认为False

意思是:是否将计算得到的值直接覆盖之前的值

例如:x = x+1

即对原值x进行+1操作后得到的值,直接赋值给x

而不是如下找一个中间变量y:

y=x+1
x=y

先将x进行+1操作后赋值给中间变量y,然后将y值赋给x

这样就需要内存存储变量y

因此当inplace=True时:

就是对从上层网络nn.Conv2d中传递下来的tensor直接进行修改,这样能够节省运算内存,不用多存储其他变量。

以上这篇浅谈PyTorch中in-place operation的含义就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python科学计算之NumPy入门教程
Jan 15 Python
TensorFlow在MAC环境下的安装及环境搭建
Nov 14 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
Dec 03 Python
python 实现分页显示从es中获取的数据方法
Dec 26 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
Feb 19 Python
django rest framework 实现用户登录认证详解
Jul 29 Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
Aug 13 Python
wxPython:python首选的GUI库实例分享
Oct 05 Python
python matplotlib 画dataframe的时间序列图实例
Nov 20 Python
tensorflow 模型权重导出实例
Jan 24 Python
python实现人机五子棋
Mar 25 Python
django 读取图片到页面实例
Mar 27 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
Jun 27 #Python
pytorch 限制GPU使用效率详解(计算效率)
Jun 27 #Python
Pytorch 高效使用GPU的操作
Jun 27 #Python
Keras中的两种模型:Sequential和Model用法
Jun 27 #Python
keras输出预测值和真实值方式
Jun 27 #Python
使用Keras预训练好的模型进行目标类别预测详解
Jun 27 #Python
浅谈keras 模型用于预测时的注意事项
Jun 27 #Python
You might like
php下安装配置fckeditor编辑器的方法
2011/03/02 PHP
PHP实现的登录,注册及密码修改功能分析
2016/11/25 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
php使用imagecopymerge()函数创建半透明水印
2018/01/25 PHP
Yii框架引入coreseek分页功能示例
2019/02/08 PHP
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
2011/06/28 Javascript
Jquery多选下拉列表插件jquery multiselect功能介绍及使用
2013/05/24 Javascript
iframe里的页面禁止右键事件的方法
2014/06/10 Javascript
使用VS开发 Node.js指南
2015/01/06 Javascript
jQuery的实例及必知重要的jQuery选择器详解
2016/05/20 Javascript
jquery 多个radio的click事件实例
2016/12/03 Javascript
layer子层给父层页面元素赋值,以达到向父层页面传值的效果实例
2017/09/22 Javascript
angular4自定义表单控件[(ngModel)]的实现
2018/11/23 Javascript
js replace替换字符串同时替换多个方法
2018/11/27 Javascript
VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解
2018/11/30 Javascript
js字符串处理之绝妙的代码
2019/04/05 Javascript
JS正则表达式验证端口范围(0-65535)
2020/01/06 Javascript
JS正则表达式常见函数与用法小结
2020/04/13 Javascript
JavaScript组合模式---引入案例分析
2020/05/23 Javascript
[01:04:14]OG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
跟老齐学Python之眼花缭乱的运算符
2014/09/14 Python
对python借助百度云API对评论进行观点抽取的方法详解
2019/02/21 Python
python实现WebSocket服务端过程解析
2019/10/18 Python
HTML5 body设置自适应全屏
2020/05/07 HTML / CSS
美国成衣女装品牌:CHICO’S
2016/09/19 全球购物
Stührling手表官方网站:男女高品质时尚手表的领先零售商
2021/01/07 全球购物
大学生自我评价怎样写好
2013/10/23 职场文书
仓管岗位职责范本
2014/02/08 职场文书
乡镇党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
党员剖析材料范文
2014/09/30 职场文书
党校学习党性分析材料
2014/12/19 职场文书
物业前台接待岗位职责
2015/04/03 职场文书
英雄儿女观后感
2015/06/09 职场文书
早上好问候语大全
2015/11/10 职场文书
MySQL令人咋舌的隐式转换
2021/04/05 MySQL
剖析后OpLog订阅MongoDB的数据变更就没那么难了
2022/02/24 MongoDB