繁体   English   中英

Keras:model.evaluate() 在训练和 val 集上与上次训练时期后的 acc 和 val_acc 不同

[英]Keras: model.evaluate() on training and val set differ from the acc and val_acc after last training epoch

在最后一个训练时期之后,我得到了这个输出:

Epoch 100/100
89254/89254 - 24s - loss: 0.1935 - acc: 0.9281 - val_loss: 0.2182 - val_acc: 0.9219

但问题是,一旦我对训练数据和验证数据进行model.evaluate() ,我会得到不同的结果:

Train accuracy: 0.929661
Validation accuracy: 0.921859

这有什么意义? 尽管在测试模式下, model.evaluate()函数为什么存在参数batch_size https://keras.io/models/model/#evaluate如果我已经批量训练模型,我是否还需要为测试模式定义批量大小?

当然,首先,进度条上训练集中产生的任何度量/损失都被计算为训练批次的运行平均值,其中权重因梯度下降而发生变化。 这意味着训练指标永远不会与使用model.evaluate()计算的指标相匹配,因为在这种情况下,权重是恒定不变的。

关于验证指标,它们确实匹配,只是keras进度条仅打印四位有效数字,而您打印的更多。

关于批量大小,我已经评论说基本上已经在这里回答 Keras 使用批处理是因为您不能一次对整个数据集进行预测,这可能会占用太多内存

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM