问题
在运行深度学习代码进行调整后常常发现在运行一定情况下Loss会出现Nan。
总结本人常见的Loss出现nan的原因:
(1) 学习率过大问题, 曾经尝试调整学习率lr,确实有解决过;
(2) 查看计算各个公式中是否出现除以0, 或者log(0)的现象。这种一般出现在反向传播中梯度突然消失,采用torch.clamp解决
函数
代码如下
torch.clamp(input, min, max) → Tensor
参数
input: Tensor
min: Number or Tensor
max: Number or Tensor
-> 返回值: Tensor
该函数用于限制tensor的值大小,一般采用min= 1e-8 或者 1e-10 将tensor内的值设定一个最小值
y = torch.clamp(x, min=1e-8)