由于Pytorch中的比较运算符,梯度无法反向传播

31moq8wy  于 2023-04-12  发布在  其他
关注(0)|答案(2)|浏览(147)

由于Pytorch中的比较运算符,梯度无法反向传播。
我的代码是:

x=torch.tensor([1.0,1.0], requires_grad=True)
print(x)
y=(x>0.1).float().sum()
print(y)
y.backward()
print(x.grad)

它给出一个错误:

RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn

但是,如果我将〉改为+,它就可以工作了。我如何在比较运算符中反向传播梯度?

juzqafwq

juzqafwq2#

不可能计算跨比较运算符的梯度,因为
(x〉y).float()等于step(x-y).由于step函数在x=/0处的梯度为0,在x=0处的inf,因此它是无意义的。:(

相关问题