TensorFlow Estimator打印的Loss/MAE对应何种数据集的计算结果?
关于TensorFlow Estimator训练日志中loss与MAE的计算说明
嘿,作为刚入门深度学习的同学,你的这个问题其实非常关键——搞清楚训练日志里的指标计算方式,能帮你更好地监控模型训练状态~下面针对你的疑问逐一解释:
1. 日志中的loss(以及cross_entropy)
- 你看到的
loss = 2.2080934和单独打印的cross_entropy = 2.2080934是同一个数值,只是ResNet的包装函数把交叉熵损失单独做了打印。它们既不是单样本损失,也不是整个训练集的损失,而是当前训练step对应的批量(batch)样本的平均损失。 - 训练时模型是按batch喂入数据的,每一个
step对应处理一个batch的数据,这个loss就是该batch内所有样本损失值的平均值。
2. 日志中的MAE
- 同样的,这里的
MAE = 5.135024也是基于当前这个训练batch计算的平均绝对误差,不是验证集或全训练集的整体指标。 - 默认情况下,TensorFlow Estimator在训练阶段打印的评估指标,都是针对当前正在处理的训练batch的结果。如果想要获取全训练集或验证集的MAE,你需要在Estimator的配置中添加
EvalSpec,设置定期评估的逻辑,那时打印的指标才是对应数据集的整体计算结果。
额外细节补充
- 日志里的
learning_rate = 3.552962e-05是当前step使用的学习率(大概率是因为配置了学习率衰减策略,所以随着step增加逐渐降低)。 - 末尾的
(62.295 sec)是从训练启动到当前step累计消耗的时间。
内容的提问来源于stack exchange,提问作者Vegetal605
相关产品推荐
相关产品推荐

