python ModelCheckpoint是如何工作的?重新评估由模型检查点保存的模型时,我得到了虚假的结果

3pvhb19x  于 2023-01-24  发布在  Python
关注(0)|答案(1)|浏览(132)

为了训练一个多类分类模型,我使用模型检查点来保存一个在训练过程中具有最佳验证准确性的模型。根据模型检查点的详细输出,这看起来是正确的。但是,当重新加载保存的最佳模型,并在相同的验证数据上测试它时,结果比应该的要低得多。
这是回调的初始化。

callbacks = [keras.callbacks.ModelCheckpoint("model_adam_effnet_5.h5", monitor="val_accuracy", save_best_only=True, mode="max", verbose=1),
             ]

[

这是培训期间回调的验证准确度和输出。
然而,当我重新加载这个模型并在验证集上再次评估它时,我得到的验证精度要低得多。

如果保存的模型代表训练期间的模型,则不应发生这种情况。
当我评估拟合验证数据的模型时,我得到了与训练期间最后一个时期相同的验证准确度。
训练期间和最后一个时期的模型确认准确度。

重新评估时的模型验证准确度。

这对于模型检查点保存的模型应该是相同的,任何人都可以请向我解释确切的工作,或者如果我做错了什么。

qyswt5oh

qyswt5oh1#

我知道现在回答有点晚,但我会把它留在这里,以防有人需要答案。一个可能的解决方案是增加批处理大小。我可以通过增加批处理大小来减少差异,但仍然存在差异。BatchNorm层可能是造成此问题的原因。在此处查看可能会很有帮助:https://github.com/keras-team/keras/issues/6977

相关问题