1. 首页
  2. 编程语言
  3. Python
  4. 浅谈PyTorch中in-place operation的含义

浅谈PyTorch中in-place operation的含义

上传者: 2021-06-11 17:44:06上传 PDF文件 59.63 KB 热度 8次

in-place operation在pytorch中是指改变一个tensor的值的时候,不经过复制操作,而是直接在原来的内存上改变它的值。可以把它成为原地操作符。在pytorch中经常加后缀“_”来代表原地in-place operation,比如说.add_() 或者.scatter()。python里面的+=,*=也是in-place operation。下面是正常的加操作,执行结束加操作之后x的值没有发生变化:下面是原地操作,执行之后改变了原来变量的值:如果你使用了in-place operation而没有报错的话,那么你可以确定你的梯度计算是正确的。我们用PyTorch搭建神经网络时,会遇到nn.ReLU,inplace=True是什么意思呢?先将x进行+1操作后赋值给中间变量y,然后将y值赋给x这样就需要内存存储变量y因此当inplace=True时:就是对从上层网络nn.Conv2d中传递下来的tensor直接进行修改,这样能够节省运算内存,不用多存储其他变量。

用户评论