Я изучил это руководство в документации PyTorch для понимания Transfer Learning. Была одна строка, которую я не смог понять.
После того, как потери рассчитаны с использованием loss = criterion(outputs, labels)
, текущие потери рассчитаны с использованием running_loss += loss.item() * inputs.size(0)
и, наконец, потери эпохи рассчитаны с использованием running_loss / dataset_sizes[phase]
.
Разве не loss.item()
должно быть для всей мини-партии (пожалуйста, поправьте меня, если я ошибаюсь). то есть, если batch_size
равно 4, loss.item()
даст потерю для всего набора из 4 изображений. Если это правда, почему loss.item()
умножается на inputs.size(0)
при расчете running_loss
? Разве этот шаг не является дополнительным умножением в этом случае?
Любая помощь будет принята с благодарностью. Спасибо!