PyTorch 中如何使用 torch.nn.NLLLoss?

推荐答案

-- -------------------- ---- -------
------ -----
------ -------- -- --

- ----------- --- -------------
------------ - --------------- ----- ----- ------ 
                             ------ ----- -------

- ----
------ - ---------------- ---

- ------
------- - ------------

- ----
---- - --------------------- -------

-----------

本题详细解读

1. torch.nn.NLLLoss 的作用

torch.nn.NLLLoss(Negative Log Likelihood Loss)是用于分类任务的损失函数。它通常与 torch.nn.LogSoftmax 结合使用,用于计算模型输出的负对数似然损失。

2. 输入要求

  • 模型输出model_output 应该是模型输出的 log probabilities,通常通过 torch.nn.LogSoftmaxtorch.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_fnNLLLoss 的实例。
  • loss 是计算得到的损失值。

5. 注意事项

  • 确保模型输出是 log probabilities,而不是 raw logits。
  • 目标标签应该是类别的索引,而不是 one-hot 编码。
纠错
反馈