nn.CrossEntropyLoss
(交叉熵损失函数) 和nn.NLLLoss
(负对数似然损失函数)的区别
-
输入格式:
nn.CrossEntropyLoss
:直接接受未归一化的 logits 作为输入,并在内部自动应用log_softmax
来计算对数概率。nn.NLLLoss
:接受对数概率(log-probabilities)作为输入,也就是说,输入需要先通过log_softmax
处理。
-
计算流程:
nn.CrossEntropyLoss
的计算流程是:- 先对 logits 应用
softmax
,将其转换为概率分布。 - 再对概率分布取对数,变为对数概率(log-probabilities)。
- 最后,对真实类别对应的对数概率取负值,得到损失。
- 先对 logits 应用
nn.NLLLoss
的计算流程是:- 直接使用对数概率作为输入。
- 对真实类别对应的对数概率取负值,得到损失。
代码示例
import torch
import torch.nn as nn
import torch.nn.functional as Flogits = t