训练网络的时候Loss突然变为nan
最近在跑一个实验,训练网络的时候Loss突然变为了nan,如下图所示:有趣的事是这个nan出现的时间是随机的,有时候是第一个epoch,有时候是后面的epoch。
上网查各种资料,有的说Loss的问题,比如可能出现了log0,分母为0的问题,但这种可能性可以排除,因为我用的loss是mse loss:
关于mse loss就不在这里说明了,大家可以上网查询细节信息。所以,可以排除是loss的可能。
还有的资料说是学习率的问题,我改了很多次也没解决,所以也可以排除了。。。
为了“调查”清楚出现nan的原因,接下来就开始进行debug调试:
经过调试后,发现了问题的所在:kernal突然变成了nan!!!
这里要说明一下,kernal是我训练的标签,pre_kernal是网络的输出,训练的目的就是让pre_kernal的值尽量接近kernal标签的值。<