推荐答案
-- -------------------- ---- ------- ------ ----- ------ -------- -- -- - ----------- --- ------------- ------------ - --------------- ----- ----- ------ ------ ----- ------- - ---- ------ - ---------------- --- - ------ ------- - ------------ - ---- ---- - --------------------- ------- -----------
本题详细解读
1. torch.nn.NLLLoss
的作用
torch.nn.NLLLoss
(Negative Log Likelihood Loss)是用于分类任务的损失函数。它通常与 torch.nn.LogSoftmax
结合使用,用于计算模型输出的负对数似然损失。
2. 输入要求
- 模型输出:
model_output
应该是模型输出的 log probabilities,通常通过torch.nn.LogSoftmax
或torch.nn.functional.log_softmax
获得。 - 目标标签:
target
是每个样本的类别索引,形状为(N,)
,其中N
是 batch size。
3. 计算过程
NLLLoss
的计算公式为:
[ \text{loss}(x, y) = -x[y] ]
其中 x
是模型输出的 log probabilities,y
是目标标签。
4. 示例代码解释
model_output
是一个形状为(2, 3)
的张量,表示 batch size 为 2,每个样本有 3 个类别的 log probabilities。target
是一个形状为(2,)
的张量,表示每个样本的目标类别索引。loss_fn
是NLLLoss
的实例。loss
是计算得到的损失值。
5. 注意事项
- 确保模型输出是 log probabilities,而不是 raw logits。
- 目标标签应该是类别的索引,而不是 one-hot 编码。