PyTorch torch.nn.NLLLoss Funktion

PyTorch torch.nn 参考手册PyTorch torch.nn Referenzhandbuch


torch.nn.NLLLossIst der Negative Log-Likelihood-Verlust in PyTorch.

Es wird für Multiklassen-Klassifizierungsaufgaben verwendet und muss zusammen mit LogSoftmax verwendet werden.

Funktionsdefinition

torch.nn.NLLLoss(weight=None, ignore_index=-100, reduction='mean')

Anwendungsbeispiele

Beispiel 1: Grundlegende Verwendung

Beispiel

import torch
import torch.nn as nn

# Zuerst LogSoftmax, dann NLLLoss
log_softmax = nn.LogSoftmax(dim=1)
nll = nn.NLLLoss()

# Modellausgabe (Logits)
logits = torch.randn(4, 10)
# Nach Log-Softmax
log_probs = log_softmax(logits)
# Wahre Labels
targets = torch.tensor([2, 5, 1, 7])

loss = nll(log_probs, targets)
print("NLL-Verlust:", loss.item())

Beispiel 2: Äquivalent zu CrossEntropyLoss

Beispiel

import torch
import torch.nn as nn

logits = torch.randn(4, 10)
targets = torch.tensor([2, 5, 1, 7])

# Methode 1: CrossEntropyLoss direkt verwenden
loss1 = nn.CrossEntropyLoss()(logits, targets)

# Methode 2: LogSoftmax + NLLLoss
loss2 = nn.NLLLoss()(nn.LogSoftmax(dim=1)(logits), targets)

print("CrossEntropyLoss:", loss1.item())
print("LogSoftmax + NLLLoss:", loss2.item())
print("Die Ergebnisse sind gleich:", abs(loss1 - loss2) < 1e-5)

Anwendungsfälle

  • Mehrklassenklassifikation: Wird mit LogSoftmax verwendet
  • Benutzerdefinierter Verlust: Spezielle Anforderungen

Hinweis: CrossEntropyLoss enthält bereits LogSoftmax, daher wird es normalerweise direkt verwendet.


PyTorch torch.nn 参考手册PyTorch torch.nn Referenzhandbuch

Andere Erweiterungen