You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keras训练中每轮内各批次loss与acc的计算依据问询

关于Keras单Epoch内批次loss/acc计算逻辑的详解

你猜的完全没错!Keras在训练时,单个epoch里每批次输出的loss和acc,就是基于当前刚完成训练的这批训练样本计算出来的,和验证集没有任何关系。

具体来说,当你用verbose=1(也就是你示例里的进度条模式)运行model.fit()时:

  • 进度条里的数字比如54320/55200,代表已经完成训练的样本总数
  • 后面跟着的loss和acc,是刚刚跑完的这个batch的训练样本上的即时计算结果(不同Keras版本可能有细微差异,但核心都是基于训练数据,而非验证数据)
  • ETA则是根据已经用掉的训练时间,预估整个epoch剩余的训练时间

这里要特别区分验证集的指标:验证集的val_loss和val_acc只会在整个epoch的训练样本全部跑完之后才会计算并显示,而且只有当你设置了validation_data或者validation_split参数时才会出现——它是模型用整个验证集跑一遍得到的结果,绝对不会出现在批次进度条的实时输出里。

如果你想验证这个逻辑,很简单:找个极小的自定义数据集(比如10个标注样本),把batch_size设为2,然后手动计算每个batch的loss和acc,对比Keras输出的实时指标,你会发现完全对应上。

内容的提问来源于stack exchange,提问作者black zeng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:08:11