gpt4 book ai didi

python - 具有相同数据集的 Keras 中 fit() 和 evaluate() 的不同准确度

转载 作者:太空宇宙 更新时间:2023-11-03 11:14:03 26 4
gpt4 key购买 nike

我编写 Keras 代码来训练 GoogleNet。然而,从 fit() 获得的准确率是 100%,而使用相同的训练数据集进行 evaluate(),准确率仍然只有 25%,这有如此巨大的差异!!!此外,与 fit() 不同的是,evaluate() 的准确性不会随着训练次数的增加而提高,这意味着它几乎保持在 25%。

有人知道这种情况出了什么问题吗?

# Training Dataset and labels r given. Here load GoogleNet model
from keras.models import load_model
model = load_model('FT_InceptionV3.h5')
# Training Phase
model.fit(x=X_train,
y=y_train,
batch_size=5,
epochs=20,
validation_split=0,
#callbacks=[tensorboard]
)

#Testing Phase
train_loss , train_acc=model.evaluate(X_train, y_train, verbose=1)
print("Train loss=",train_loss,"Train accuracy",train_acc)

Training Result

Testing Result

最佳答案

在深入研究 Keras 问题后,我发现了这一点。

这样做的原因是,当您使用 fit 时,在每批训练数据中更新权重。 fit 方法返回的损失值不是最终模型损失的均值,而是每批上使用的所有略有不同的模型的损失的均值。

另一方面,当您使用评估时,在整个数据集上使用相同的模型。而且这个模型实际上甚至没有出现在 fit 方法的损失中,因为即使在最后一批训练中,计算出的损失也用于更新模型的权重。

总而言之,fit 和 evaluate 有两种完全不同的行为。

引用:-

  1. > Keras_issues_thread
  2. > Keras_official_doc

关于python - 具有相同数据集的 Keras 中 fit() 和 evaluate() 的不同准确度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55097362/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com