我看了一下PyTorch文档中关于迁移学习的这篇教程。有一行代码我没有理解清楚。
在使用
我的疑问是:
感谢任何帮助。谢谢!
在使用
loss = criterion(outputs, labels)
计算损失之后,使用running_loss += loss.item() * inputs.size(0)
计算运行损失值,最终使用running_loss / dataset_sizes[phase]
计算出该轮训练的损失值。我的疑问是:
loss.item()
不是应该用于整个mini-batch才对吗?也就是说,如果batch_size
是4,那么loss.item()
应该给出整个4张图片的损失值。如果是这样,为什么在计算running_loss
时要将loss.item()
与inputs.size(0)
相乘呢?这一步骤不是多余的吗?感谢任何帮助。谢谢!
t
在GPU内存中,而t.item()
在CPU内存中,对吗?如果我错了,您能简要解释一下吗?" - Aditya Waght.item()
会获取存储在 CPU 上的损失值(作为浮点数),但重点是t
包含前述的损失值和梯度,后者仅与反向传播相关,因此在计算/存储运行损失时不应保留。因此,无论您使用 CPU 还是 GPU,这都是相关的。 - Eric