В tf.estimator
какая разница между average_loss
и loss
? Я бы догадался по именам, что первое будет вторым, разделенным на количество записей, но это не так; с несколькими тысячами записей последний примерно в три или четыре раза больше первого.
Оценка Tensorflow: medium_loss против потерь
Ответы (2)
Разница между 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_loss
и weights
. Те же значения сообщаются в сводке tensorboard.
Фактическое соотношение равно точно 4.0
, что соответствует размеру партии.
Когда вы обучаете сеть, вы обычно подаете входные данные в виде пакетов.
В пример, на который вы ссылаетесь, размер партии равен 4
, поэтому потери представляют собой сумму потерь по всей партии, а средние потери — это средние потери по всей партии.