9

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

4

2 回答 2

7

average_loss和之间的区别在于loss,一个减少SUM了批量损失,而另一个减少MEAN了相同的损失。因此,该比率正是batch_size您的论点input_fn。如果您通过batch_size=1,您应该看到它们相等。

实际报告的张量取决于 的特定类型tf.Estimator,但它们非常相似,这是回归头的源代码(对应于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张量中计算出来的。相同的值会报告给张量板摘要。

于 2017-11-02T16:19:41.520 回答
3

实际比例正好是4.0,对应于批量大小。

当你训练一个网络时,你通常将输入作为一个批次提供。
在您参考的示例4中,批次大小为,因此损失是整个批次损失的总和,而平均损失是整个批次损失的平均值。

于 2017-11-02T00:05:48.470 回答