首页 > 解决方案 > Keras同批次的训练和评估结果不同

问题描述

如何可能进入以下情况?

In[20] model.test_on_batch(x, y)
Out[20]: [4.861001, 0.0]
In[21]: model.train_on_batch(x, y)
Out[21]: [0.019215763, 0.99609375]

两个输出值分别对应二进制交叉熵和二进制精度。

也就是说,同一批模型的训练和测试结果是完全不同的。训练结果大概是好的。预测(带有model.predict)也不正确。

在 TensorFlow 1.8.0 下运行 Keras 2.2.4。

标签: pythontensorflowkerasdeep-learning

解决方案


如果您使用具有 Dropout 或 BatchNormalization 层的模型,这是完全正常的,因为它们在训练和测试期间具有不同的行为。如果您添加任何正则化术语,那么这些将在测试期间被禁用,它将影响您从中获得的任何损失model.evaluate


推荐阅读