gpt4 book ai didi

浅谈PyTorch中in-place operation的含义

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 30 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章浅谈PyTorch中in-place operation的含义由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

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

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

?
1
2
3
4
5
6
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])

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

?
1
2
3
4
5
6
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的含义就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我.

原文链接:https://blog.csdn.net/york1996/article/details/81835873 。

最后此篇关于浅谈PyTorch中in-place operation的含义的文章就讲到这里了,如果你想了解更多关于浅谈PyTorch中in-place operation的含义的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com