【发布时间】:2018-04-09 08:58:35
【问题描述】:
在tf.estimator 中,average_loss 和loss 有什么区别?我会从名称中猜到前者是后者除以记录数,但事实并非如此;有几千条记录,后者大约是前者的三四倍。
【问题讨论】:
标签: tensorflow machine-learning tensorflow-estimator
在tf.estimator 中,average_loss 和loss 有什么区别?我会从名称中猜到前者是后者除以记录数,但事实并非如此;有几千条记录,后者大约是前者的三四倍。
【问题讨论】:
标签: tensorflow machine-learning tensorflow-estimator
average_loss 和 loss 的区别在于,一个减少了 SUM 而不是批量损失,而另一个减少了 MEAN同样的损失。因此,该比率正是您的input_fn 的batch_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_loss 和 weights 张量计算得出的。相同的值会报告给张量板摘要。
【讨论】:
实际比例正好是4.0,对应batch size。
当您训练网络时,您通常将输入作为批次提供。
在你所指的example中,batch size是4,所以loss是整个batch的loss之和,而average loss是整个batch的loss的平均值。
【讨论】: