在tf.estimator
中,average_loss
和loss
有什么区别?我本可以从名称中猜测前者是后者除以记录数,但事实并非如此;如果有几千条记录,后者大约是前者的三四倍。
最佳答案
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
张量计算的。相同的值会报告给张量板摘要。
关于 tensorflow 估计器 : average_loss vs loss,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46980374/