nan踩坑记
-
检查数据
如果输入的是图片数据,先检查是否有 打不开的图片/大小明显异常的图片;
检查输入模型的数据是否与所使用的loss函数提供接口中的要求相一致。 -
检查所有除式中的分母
特别是在自己实现的归一化函数中,尤其需要注意。 -
检查是否有进行log_softmax。
-
检查是否有使用正确的激活函数。
-
如果在PyTorch中使用CTC损失函数,可以尝试将log_softmax的输出转换为torch.float64类型。可参见
https://discuss.pytorch.org/t/ctcloss-performance-of-pytorch-1-0-0/27524/59 -
在PyTorch中可以使用如下代码来检查是否出现nan,并定位可能出现错误的输入的位置
with torch.autograd.detect_anomaly():
loss.backward()