咨询Keras中每个Epoch训练准确率的计算方法
Keras训练准确率计算逻辑详解
嗨,我来给你把这个训练准确率的计算逻辑讲明白!
首先,你对batch size和epoch步数的理解完全没错:8000个样本、batch size=16,所以单个epoch确实要跑500个训练批次。而你看到的Epoch 1/50对应的训练准确率0.9381,是这么算出来的:
- 每批次先算局部准确率:模型每处理完一个batch(16个样本),会先计算这个batch里的预测准确率——也就是该batch中预测正确的样本数除以16。比如某batch里15个样本预测正确,那这个batch的准确率就是15/16=0.9375。
- 整个epoch做加权平均:等500个batch全部处理完后,Keras会把这500个batch的准确率做加权平均。因为你的每个batch样本数都是16(8000刚好是16的整数倍),所以权重都是一样的,直接把500个准确率加起来除以500就行;如果最后一批样本数不足16(比如总样本8001),那最后一个batch的权重就是实际样本数(1),其他批次权重是16,最终用所有批次的「准确率×样本数」之和除以总样本数得到最终的epoch训练准确率。
举个简化的小例子:假设只有2个batch,第一个batch准确率0.9,第二个batch准确率0.9762,那总准确率就是(0.9×16 + 0.9762×16)/32 = (14.4 + 15.6192)/32 ≈ 0.9381,刚好和你看到的数值对应上~
另外要提一句:不同的Keras版本或者自定义的metrics可能会有细微差异,但核心的加权平均逻辑是一致的,都是基于每个训练批次的准确率,结合样本数加权得到整个epoch的训练准确率。
内容的提问来源于stack exchange,提问作者user121
相关产品推荐
相关产品推荐

