首页 > 解决方案 > 验证准确度与模型结果之间的差异。评估

问题描述

我是深度学习的新手,我无法弄清楚您在每个时期结束时获得的验证准确度使用该model.evaluate()方法获得的准确度之间有什么区别。例如:

model.fit(train_dataset, validation_data=test_dataset, epochs=1)

model.fit(train_dataset, epochs=1)
loss, scores = model.evaluate(test_dataset)

这两个脚本会返回相同的准确性吗?

标签: tensorflowmachine-learningkerasdeep-learning

解决方案


是的,两者将返回相同的值,但是它们用于不同的目的。

通常你不会evaluate验证集。相反,您将评估另一个集合 test_set,但是在您的情况下,您似乎只有一个火车和一个 test_dataset,因此这两种方法(方法 in 的最后一个时期.fit)将输出相同的精度。

validation_data参数用于在模型训练时输出准确度/损失指标,让您了解模型如何随着时间的推移对未调整模型权重的数据(即“看不见的”数据)进行学习。

但是,鉴于您查看了这些结果,并调整您的模型以尝试获得最佳验证准确度/损失,您已经引入了一定程度的偏差,因此您可能会对模型在真正看不见的情况下的表现产生过度乐观的印象数据 - 考虑一下,您正在针对那个非常具体的验证集进行优化,因此另一个数据集可能会给出不同的结果。

因此,将另一组 保留在一边是有意义test_dataset的. 这就是model.evaluate进来的地方,因为它是一种无需model.fit再次调用即可查看准确性的方法。


推荐阅读