Сравнение методов вычисления Loss функции
Всем привет. Недавно начал делать проект по нейронке, а именно классификацию рукописных цифр(MNIST). Во время написания вычисления функции ошибки, проанализировал несколько сайтов и понял что есть несколько способов и идей как это делать.
Самая простая - это суммирование всех лоссов с последующим делением на количество объектов
val_loss += loss.item() * data.size(0)
val_loss /= len(val_loader.dataset)
Другой способ - это сбор лоссов по батчам и усреднение по батчам
val_losses.append(loss.item())
val_epoch_loss = np.mean(val_losses)
val_loss.append(val_epoch_loss)
Чат гпт еще порекомендовал такой способ, но я не оч понял: вычисление среднего лосса по всем объектам (не по батчам)
batch_size = y_batch.size(0)
running_loss += loss.item() * batch_size
num_samples += batch_size
epoch_loss = running_loss / num_samples
Теперь стало интересно не что ИИ говорит, а то что используете вы сами, какой метод рекомендуете больше и какой способ лучше?