当前位置: 代码迷 >> 综合 >> pytorch 中 in-place
  详细解决方案

pytorch 中 in-place

热度:9   发布时间:2024-02-23 11:18:57.0

in-place

inplace-选择是否进行覆盖运算

Torch 为了提高速度,model:forward() 操作之后赋予的变量是不给这个变量开盘新的存储空间的,而是 引用。就相当于 起了个别名。

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

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

在 pytorch 中, 有两种情况不能使用 inplace operation:

  1. 对于 requires_grad=True 的 叶子张量(leaf tensor) 不能使用 inplace operation

  2. 对于在 求梯度阶段需要用到的张量 不能使用 inplace operation

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