nan踩坑记

  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()

posted @ 2022-10-22 23:06  7aughing  阅读(28)  评论(0编辑  收藏  举报