首页 文章

Tensorflow估算器:average_loss vs loss

提问于
浏览
5

tf.estimator 中, average_lossloss 之间有什么区别?我会从名字中猜到前者将被后者除以记录的数量,但事实并非如此;有几千条记录,后者大约是前者的三到四倍 .

2 回答

  • 2

    average_lossloss 之间的区别在于,一个减少了批次损失的 SUM ,而另一个减少了 MEAN 相同的损失 . 因此,该比率恰好是 input_fnbatch_size 参数 . 如果你传递 batch_size=1 ,你应该看到它们相等 .

    实际报告的张量取决于 tf.Estimator 的特定类型,但它们非常相似,here's the source code用于回归头(对应于 tf.DNNRegressor ):

    training_loss = losses.compute_weighted_loss(unweighted_loss, weights=weights,
                                                 reduction=losses.Reduction.SUM)
    
    mean_loss = metrics_lib.mean(unweighted_loss, weights=weights)
    

    如您所见,它们是从相同的 unweighted_lossweights 张量计算出来的 . 将相同的值报告给tensorboard摘要 .

  • 3

    实际比率恰好是 4.0 ,它对应于批量大小 .

    在训练网络时,通常会批量输入输入 .
    在您所指的example中,批量大小为 4 ,因此损失是整批损失的总和,而平均损失是整批损失的平均值 .

相关问题