【问题标题】:Different results in training and evaluation of the same batch in KerasKeras同批次的训练和评估结果不同
【发布时间】:2018-10-30 20:42:04
【问题描述】:

如何可能会陷入以下情况?

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。

【问题讨论】:

  • 你知道overfittinghigh variance吗?
  • @RudolfMorkovskyi 请注意,我指的是使用完全相同的批次进行测试和训练。我认为您的 cmets 不适用于这里。
  • 我发现Tensorflow 1.8.0 有一个bug。更新到 TensorFlow 1.11 解决了这个问题。不过我留下了这个问题,因为答案可能对其他人的未来有用。

标签: python tensorflow keras deep-learning


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-10
    • 1970-01-01
    • 2019-12-20
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多