首页 > 解决方案 > PyTorch 中的运行损失是什么以及如何计算

问题描述

我查看了 PyTorch 文档中的教程以了解迁移学习。有一句我没听懂。

使用 计算损失后,使用 计算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

任何帮助,将不胜感激。谢谢!

标签: pythondeep-learningpytorchtorchtorchvision

解决方案


这是因为由CrossEntropy或其他损失函数给出的损失除以元素的数量,即mean默认情况下减少参数。

torch.nn.CrossEntropyLoss(weight=None, size_average=None, ignore_index=-100, reduce=None, reduction='mean')

因此,loss.item()包含整个小批量的损失,但除以批量大小。这就是为什么在计算 时loss.item()乘以由 给出的批量大小。inputs.size(0)running_loss


推荐阅读