问题:上图为使用pix2pix(生成器使用resnet)模型进行训练,损失函数下降,psnr图像质量上升过程,前中期训练正常。设置epoch训练200次,训练到170次时候,损失值突然变为了nan。
配置先验知识:由于GPU显存11GB,训练时显存消耗较大,只能将batchSize降到了2
猜测:有可能是因为突然遇到的坏样本使得在batchSize为2的情况下,计算出来的平均损失偏差交较大,导致梯度绝对值太大,从而参数突然变化,梯度爆炸(纯属猜测,还没有验证)
可能方法:
1)如果batchSize足够大,会减小在一个batch中同时出现坏样本的概率。但显存已经不允许
2)尽可能的用较好的样本去训练