我正在我的一个模型中使用floor()
方法。我想了解pytorch对其梯度传播的作用,因为floor
是一种不连续的方法。
如果未定义渐变,则可以根据需要重写向后方法以定义自己的渐变,但是我想了解默认行为是什么,如果可能的话,请参见相应的源代码。
import torch
x = torch.rand(20, requires_grad=True)
y = 20*x
z = y.floor().sum()
z.backward()
x.grad返回零。
z具有grad_fn =
因此FloorBackward是渐变方法。但是在pytorch存储库中没有引用FloorBackward
的源代码。
由于底函数是分段常数。这意味着几乎所有地方的梯度都必须为零。
虽然代码没有说明任何问题,但我希望梯度到处都设置为常数零。