深度学习模型中训练损失计算背后的解释

数据挖掘 Python 深度学习 分类 损失函数
2022-03-06 08:39:29

我正在尝试使用卷积神经网络对图像分类问题进行建模。我在 Github 上遇到了一个代码,其中我无法理解在训练循环中进行损失计算的以下行的含义。
我省略了大部分细节,只放置了相关代码-

for batch_idx, (data, target) in enumerate(final_train_loader):
     loss = criterion(output,target)
     #Idea behind the below line
     train_loss = train_loss + ((1 / (batch_idx + 1)) * (loss.data - train_loss))

这里使用了交叉熵损失函数。

1个回答

你问的那条线

train_loss = train_loss + ((1 / (batch_idx + 1)) * (loss.data - train_loss))

基本上是在计算完成批次的平均 train_loss

为了说明,假设已经完成了 4 批(平均损失名为 avg_loss),当前是从第 5 批计算的(损失名为 new_loss)

新的平均损失来自

4×avg_loss+new_loss5

这与

avg_loss+new_lossavg_loss5

这是代码完成的计算