最近在复现一个图像分类的模型,用PyTorch写的时候,训练到第3个epoch loss就突然变成NaN了,学习率已经降到1e-4了,也加了梯度裁剪,但还是会炸。后来实在没办法,用Keras照着同样的网络结构写了一遍,居然稳稳跑完了,loss正常下降。我就很困惑,同样的数据、同样的超参,为什么PyTorch这边会不稳定?是PyTorch的自动求导有什么坑,还是我哪个层用错了?有没有人遇到过类似的情况,求指点一下排查方向。
最近在复现一个图像分类的模型,用PyTorch写的时候,训练到第3个epoch loss就突然变成NaN了,学习率已经降到1e-4了,也加了梯度裁剪,但还是会炸。后来实在没办法,用Keras照着同样的网络结构写了一遍,居然稳稳跑完了,loss正常下降。我就很困惑,同样的数据、同样的超参,为什么PyTorch这边会不稳定?是PyTorch的自动求导有什么坑,还是我哪个层用错了?有没有人遇到过类似的情况,求指点一下排查方向。
查下BN的eps和momentum,Keras默认跟PyTorch不一样,这块最容易悄悄炸。