pytorch 被使用 torch.abs 的就地操作错误修改

问题描述 投票:0回答:0

以下一段代码:

import torch
x=torch.tensor([-1.2, 0.6], requires_grad=True)
y=1+x
y[0]=torch.abs(y[0])
y.sum().backward()

给出错误说:

RuntimeError:梯度计算所需的变量之一已被就地操作修改:[torch.FloatTensor []],它是 AsStridedBackward0 的输出 0,版本为 1;预期版本 0 代替。

但是,如果您将第四行更改为

y[0]=torch.abs_(y[0])
,一切都会再次起作用。但是根据文档,
abs_
abs
的原位版本。为什么它有效而
abs
不会?

python pytorch autograd
© www.soinside.com 2019 - 2024. All rights reserved.