gpt4 book ai didi

python - 如何解释 model.evaluate() 返回的损失?

转载 作者:行者123 更新时间:2023-11-28 18:14:55 25 4
gpt4 key购买 nike

我搜索了很多答案,但未能找到令人满意的答案。

如果我理解正确,在 model.fit() 期间,Keras 将最后一批的损失打印到终端。

如果我在训练集上调用 model.evaluate(),我会得到整个集的损失值。

因此,凭直觉,如果我在训练集的单个实例上调用 model.evaluate(),我得到的值应该是调用 model 时得到的值的一小部分。 evaluate() 在整个训练集上。但相反,我得到了一个接近甚至更大 ~10 倍的值。知道为什么吗?

最佳答案

If I understood correctly, during model.fit(), Keras prints the loss for the last batch to terminal.

一般来说是的,但这也取决于你的verbose参数;如果它设置为 2,你将得到 每个纪元一行,但如果你将它设置为 1,你将得到一个进度条 提供每批处理和其他信息的信息。

这还会打印您包含在模型中的任何其他指标(例如准确性、MSE 等)。


现在,我认为您所期望的直观行为不太正确。首先,我必须说这也将取决于您的特定模型和架构,因为像 Dropout Layers 这样的一些功能可能有自己特定的交互,这可能会改变您的损失和指标的结果。

问题是 model.evaluate() 方法按照 docs 中的规定批量 进行计算.两个重要的参数是 batch_sizesteps,前者是每个评估步骤的样本数,后者是完成评估的步骤数(批处理)。

深入研究model.evaluate() 的源代码,我们可以看到它对steps 返回的损失和其他指标求平均。或 num_samples你的批量大小

这意味着如果你只传递一个样本,你得到的结果将除以 1(并得到更高的值),而如果你提供更多样本(比如你的测试数据),结果将由大于 1 的数字进行平均,从而获得比用较少样本给出的值“更小”的值。

关于python - 如何解释 model.evaluate() 返回的损失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48954694/

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