PyTorch中in-place操作具体指什么?
- 内容介绍
- 文章标签
- 相关推荐
本文共计538个文字,预计阅读时间需要3分钟。
in-place操作在PyTorch中指的是直接修改tensor的值而不进行复制,即直接在原始内存上修改其值。它可以作为原地操作符使用。在PyTorch中,通常通过在操作后加上后缀'_'来表示原地操作,例如原地进行加法操作可以表示为`a +=b`。
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而没有报错的话,那么你可以确定你的梯度计算是正确的。
本文共计538个文字,预计阅读时间需要3分钟。
in-place操作在PyTorch中指的是直接修改tensor的值而不进行复制,即直接在原始内存上修改其值。它可以作为原地操作符使用。在PyTorch中,通常通过在操作后加上后缀'_'来表示原地操作,例如原地进行加法操作可以表示为`a +=b`。
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而没有报错的话,那么你可以确定你的梯度计算是正确的。

