pytorch篇---NLLLoss与CrossEntropyLoss详解

NLLLoss

NLLLoss的计算前,卷积或者全卷积获取的结果需要通过softmax以及log函数的计算。
NLLLoss做的事情主要是将输入数据取反,然后求均值

CrossEntropyLoss

通过网络卷积或全卷积直接获取的结果即可参与计算交叉熵损失。
简单快捷,计算速度相对也快。

具体实现代码:

初始化数据

pytorch篇---NLLLoss与CrossEntropyLoss详解_第1张图片

softmax操作

pytorch篇---NLLLoss与CrossEntropyLoss详解_第2张图片

torch.Log操作

pytorch篇---NLLLoss与CrossEntropyLoss详解_第3张图片

计算NLLLoss

NLLLoss的结果就是把上面的输出与Label对应的那个值拿出来,再去掉负号,再求均值。
【这句话其实就是求交叉熵】

  • 假设我们现在Target是[1, 0, 2](第一张图片是猫,第二张是狗,第三张是熊)。
  • 第一行取第1个元素,第二行取第0个,第三行取第2个,去掉负号,结果是:0.6858, 1.7522, 1.1409。
  • 再求个均值
    pytorch篇---NLLLoss与CrossEntropyLoss详解_第4张图片

计算CrossEntropyLoss

pytorch篇---NLLLoss与CrossEntropyLoss详解_第5张图片

softmax_loss的流程:

  • softmax
  • log
  • nn.NLLLoss
    CrossEntropyLoss就是把以上Softmax_Log–NLLLoss合并成一步

你可能感兴趣的:(pytorch)