Pytorch NLLLOSS 的理解

Posted

技术标签:

【中文标题】Pytorch NLLLOSS 的理解【英文标题】:Understanding of Pytorch NLLLOSS 【发布时间】:2021-11-18 08:56:24 【问题描述】:

PyTorch 的负对数似然损失,nn.NLLLoss 定义为:

因此,如果使用单批次中一个的标准重量计算损失,则损失的公式始终为:

-1 *(正确类别的模型预测)

示例:

正确类别 = 0

模型预测正确 class= 0.5

损失 = -1 * 0.5

那么,如果在计算损失时不涉及对数函数,为什么将其称为“负对数似然损失”? ​

【问题讨论】:

【参考方案1】:

确实没有使用log 来计算nn.NLLLoss 的结果,所以这可能有点令人困惑。但是,我相信它之所以被这样调用是因为它期望接收日志概率:

通过前向调用给出的输入应该包含每个类的对数概率。 - docs

最后,在名称中包含它并没有多大意义,因为您不妨将此函数应用于非对数概率...

【讨论】:

以上是关于Pytorch NLLLOSS 的理解的主要内容,如果未能解决你的问题,请参考以下文章

pytorch nllloss 函数目标形状不匹配

标签平滑Label Smoothing Demo(附pytorch的NLLLoss(),gather())

pytorch CrossEntropyLoss(), Softmax(), logSoftmax, NLLLoss

通俗理解交叉熵和KL散度(包括标签平滑的pytorch实现)

通俗理解交叉熵和KL散度(包括标签平滑的pytorch实现)

通俗理解交叉熵和KL散度(包括标签平滑的pytorch实现)