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

最佳答案

average_lossloss之间的区别在于,一个减少批次损失中的 SUM ,而另一个减少相同损失中的 MEAN 。因此,比率恰好是batch_sizeinput_fn参数。如果传递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张量计算的。将相同的值报告给张量板摘要。

关于Tensorflow估算器: average_loss vs loss,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46980374/

10-13 00:07