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

Keras训练时指标通过update_state聚合是否合理?

TensorFlow Keras指标的update_state聚合逻辑

大多数TensorFlow Keras模型在训练步骤结束时计算指标,都会通过metric.update_state(metric_value)方法记录指标值。这个方法不会直接覆盖之前的结果,而是根据指标类型,以特定逻辑和历史结果进行聚合。

比如Mean和Sum这两个常用指标的表现差异明显,容易让人对Mean的计算逻辑产生误解:

from tensorflow.keras.metrics import Sum, Mean

# Mean指标示例
m = Mean()
m.update_state(5)
print(m.result()) # 输出5.0(单样本平均值)
m.update_state(2) 
print(m.result()) # 输出3.5((5+2)/2,共2个样本)
m.update_state([1, 2])
print(m.result()) # 输出2.5((5+2+1+2)/4,共4个样本)

# Sum指标示例
m = Sum()
m.update_state(5)
print(m.result()) # 输出5.0
m.update_state(2) 
print(m.result()) # 输出7.0(5+2)
m.update_state([1, 2])
print(m.result()) # 输出10.0(7+1+2)

需要明确的是,Mean指标的计算逻辑是累计所有输入样本的总和,除以累计的样本总数,而非每次取当前平均值与新批次平均值再做二次平均。你之前的误解在于第三次计算时错误用(3.5 + (1+2)/2)/2推导,但实际上第三次输入的[1,2]是两个独立样本,累计总和为5+2+1+2=10,累计样本数为1+1+2=4,10/4=2.5才是正确计算方式。这种设计是为了让指标能准确反映整个训练过程的全局平均水平,适配分批训练时多样本输入的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 22:12:37