我在训练孪生网络的时候遇到了这个问题
现象0:
模型finetune,一开始的时候最后分类全连接层fc7输出特征值包含inf,可以用python np.any(np.isnan(fc7)) or not np.all(np.isfinite(fc7))
检测到。
可能的原因:初始化不好,你使用了不同结构的模型的权重做finetune,可以尝试:
1, 不finetune,从头训
2,finetune时不加载最后分类的全连接层权重,或者只加载部分层的权重
现象一:
模型loss稳定下降,训练集准确率特别高,loss特别低,几个epoch之后,突然出现模型输出特征值为nan,预测的人脸id为为0 (因为输出logit为0之后求argmax始终为0),loss为nan
分析:
- nan表示结果不是一个数。
- 大模型在小数据集上发生了过拟合
- 需要检查特征值输出,需要检查batch中输入的label和预测的label,需要检查loss公式(如果是自己构造的话)