pytorch篇—NLLLoss与CrossEntropyLoss详解

  • Post author:
  • Post category:其他




NLLLoss

NLLLoss的计算前,卷积或者全卷积获取的结果需要通过softmax以及log函数的计算。

NLLLoss做的事情主要是将输入数据取反,然后求均值



CrossEntropyLoss

通过网络卷积或全卷积直接获取的结果即可参与计算交叉熵损失。

简单快捷,计算速度相对也快。


具体实现代码:



初始化数据

在这里插入图片描述



softmax操作

在这里插入图片描述



torch.Log操作

在这里插入图片描述



计算NLLLoss

NLLLoss的结果就是把上面的输出与Label对应的那个值拿出来,再去掉负号,再求均值。

【这句话其实就是求交叉熵】

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

    在这里插入图片描述



计算CrossEntropyLoss

在这里插入图片描述

softmax_loss的流程:

  • softmax
  • log
  • nn.NLLLoss


    CrossEntropyLoss就是把以上Softmax_Log–NLLLoss合并成一步



版权声明:本文为m0_46825740原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。