【问题标题】:Keras model predictions with strange behavior: High acc while "training=True", bad otherwise具有奇怪行为的 Keras 模型预测:“training=True”时高acc,否则不好
【发布时间】:2021-07-25 13:26:27
【问题描述】:

我正在尝试通过基于剧集的训练 (https://arxiv.org/abs/1711.06025) 来过度拟合我的数据。我已经复制了原始论文模型并在我的数据上对其进行了训练,这是一个 900 张图像的二进制分类问题。

随着我预期的过度拟合,损失似乎已经稳定下来。问题是,模型只是在训练模式下正确预测。

batch, label = epg.get_episode(X_train)

logits = model(batch, training=True)
# model.predict(batch) gets same result as model(batch, training=False)

print("pred:", K.eval(logits)[0, 0])
print("target:", K.eval(label)[0, 0])

使用参数training=True,我得到 99.6% 的准确率。关闭它,我得到大约 30%(这比随机的 haha​​h -binary 问题少)。 请注意,我没有更改数据,它与用于训练的数据相同。

找这个问题,发现了一些喜欢的,指向BatchNormalization层,或者预测前不要预缩放数据。这很有道理,但我不知道我的情况如何,因为我使用相同的数据生成器来训练 True 和 False。

【问题讨论】:

    标签: python keras prediction


    【解决方案1】:

    我仍然不知道究竟是什么导致了这种行为,但我已经设法解决了它,只是 进一步训练模型 并进一步观察预测,training=False 变得等于True。

    我仍然认为它与BatchNormalization() 层有关,尽管之前我的其他模型从未发生过。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-10
      • 2018-12-09
      • 2020-09-29
      • 2020-03-13
      • 2019-05-30
      • 1970-01-01
      • 2020-11-20
      • 1970-01-01
      相关资源
      最近更新 更多