PyTorch torch.nn.BCEWithLogitsLoss-Funktion

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


torch.nn.BCEWithLogitsLossEs ist die binäre Kreuzentropie-Verlustfunktion (mit Sigmoid) in PyTorch.

Es kombiniert Sigmoid und BCE, wodurch es numerisch stabiler ist, und wird für binäre Klassifikationsaufgaben verwendet.

Funktionsdefinition

torch.nn.BCEWithLogitsLoss(weight=None, reduction='mean', pos_weight=None)

Parameter:

  • weight: Manuelle Gewichte
  • pos_weight: Gewicht der positiven Klasse, verwendet bei Klassenungleichgewicht

Anwendungsbeispiele

Beispiel 1: Grundlegende Verwendung

Beispiel

import torch
import torch.nn as nn

criterion = nn.BCEWithLogitsLoss()

# Unnormalisierte Logits
logits = torch.tensor([2.0, -1.0, 0.5, -3.0])
# Binäre Labels
targets = torch.tensor([1.0, 0.0, 1.0, 0.0])

loss = criterion(logits, targets)
print("BCE-Verlust:", loss.item())

# Manuelle Überprüfung: Sigmoid + BCE
sigmoid = torch.sigmoid(logits)
bce = nn.BCELoss()(sigmoid, targets)
print("Manuelles BCE:", bce.item())

Beispiel 2: Klassenungleichgewicht

Beispiel

import torch
import torch.nn as nn

# Gewicht der positiven Klasse: die Wichtigkeit positiver Beispiele erhöhen
pos_weight = torch.tensor([5.0])
criterion = nn.BCEWithLogitsLoss(pos_weight=pos_weight)

logits = torch.randn(10, 1)
targets = torch.zeros(10, 1)
targets[:2] = 1.0  # Positive Klasse ist selten

loss = criterion(logits, targets)
print("Gewichteter BCE-Verlust:", loss.item())

Beispiel 3: Multi-Label-Klassifikation

Beispiel

import torch
import torch.nn as nn

# Multi-Label-Binärklassifikation
criterion = nn.BCEWithLogitsLoss()

# batch=4, 5 Klassen, jede kann 0 oder 1 sein
logits = torch.randn(4, 5)
labels = torch.randint(0, 2, (4, 5)).float()

loss = criterion(logits, labels)
print("Multi-Label-Verlust:", loss.item())

Anwendungsfälle

  • Binärklassifikation: Einzelnes Label
  • Multi-Label-Klassifikation: Jedes Label ist unabhängig
  • Klassenungleichgewicht: pos_weight verwenden

Hinweis: Eingabe sind Logits, Sigmoid muss nicht vorher angewendet werden.


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

Andere Erweiterungen