由于 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
但是,如果我将 > 更改为 +,它会起作用。 我如何通过比较运算符反向传播梯度?
跨比较运算符计算梯度是不可能的,因为
(x>y).float() 等于 step(x-y)。由于阶跃函数在 x=/0 处具有梯度 0,在 x=0 处具有 inf,因此它是无意义的。 :(