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