TensorFlow 预测出现NaN的一种可能以及解决方法
现象
- 使用TensorFlow进行训练(
model.fit
)时,一切正常,并且对测试数据集的预测结果(model.evaluate
)也表现正常,这时候保存模型 - 对训练集中单独一条数据,或者少量数据进行预测,预测结果出现
NaN
- 如果对稍大量数据预测,则能正常出结果,但预测结果准确度低于预期
- 如果对大量数据预测,则结果准确度符合预期
原因
经过分析,是由于训练和预测使用的归一化方法中使用的变量不一致导致的,训练和预测都是用下边的归一化方法
1 |
|
但由于训练和预测的数据不一样,导致其mean
和std
值不同,尤其预测用数据量较少时,其值差别巨大,导致训练的模型不适用于预测时归一化出来的数据,最终预测结果出现NaN
值
解决方法
在训练保存模型时,同时对训练数据的mean
和std
值保存,在预测时使用
1.保存
1 |
|
2.使用
1 |
|
TensorFlow 预测出现NaN的一种可能以及解决方法
https://blog.ctftools.com/2022/04/newpost-40/