【问题标题】:Tensorflow estimator: average_loss vs loss张量流估计器:average_loss vs loss
【发布时间】:2018-04-09 08:58:35
【问题描述】:

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

【问题讨论】:

    标签: tensorflow machine-learning tensorflow-estimator


    【解决方案1】:

    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 张量计算得出的。相同的值会报告给张量板摘要。

    【讨论】:

      【解决方案2】:

      实际比例正好是4.0,对应batch size。

      当您训练网络时,您通常将输入作为批次提供。
      在你所指的example中,batch size是4,所以loss是整个batch的loss之和,而average loss是整个batch的loss的平均值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-11-07
        • 2019-08-02
        • 2020-04-09
        • 2019-04-11
        • 1970-01-01
        • 2018-09-20
        • 1970-01-01
        相关资源
        最近更新 更多