【发布时间】:2021-07-16 02:38:14
【问题描述】:
我的模型在我使用torch.sigmoid 时有效。我试图通过创建一个新的 sigmoid 函数来使 sigmoid 更陡:
def sigmoid(x):
return 1 / (1 + torch.exp(-1e5*x))
但由于某种原因,渐变没有流过它(我得到NaN)。我的函数有问题,还是有办法简单地将 PyTorch 实现更改为更陡峭(作为我的函数)?
代码示例:
def sigmoid(x):
return 1 / (1 + torch.exp(-1e5*x))
a = torch.tensor(0.0, requires_grad=True)
b = torch.tensor(0.58, requires_grad=True)
c = sigmoid(a-b)
c.backward()
a.grad
>>> tensor(nan)
【问题讨论】:
-
不确定这是否与您的问题相关,但是当我在
numpy中实现此函数并使用 -0.58 (a-b) 调用它时,我得到了一个结果,还有一个RuntimeWarning: overflow encountered in exp。可能pytorch对这么大的指数有问题,导致nan?