Función PyTorch torch.nn.BCEWithLogitsLoss

PyTorch torch.nn 参考手册Manual de referencia de PyTorch torch.nn


torch.nn.BCEWithLogitsLossEs la función de pérdida de entropía cruzada binaria (con Sigmoid) en PyTorch.

Combina Sigmoid y BCE, es numéricamente más estable y se utiliza para tareas de clasificación binaria.

Definición de la función

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

Parámetros:

  • weight: pesos manuales
  • pos_weight: pesos de la clase positiva, para desequilibrio de clases

Ejemplos de uso

Ejemplo 1: Uso básico

Ejemplo

import torch
import torch.nn as nn

criterion = nn.BCEWithLogitsLoss()

# logits no normalizados
logits = torch.tensor([2.0, -1.0, 0.5, -3.0])
# etiquetas binarias
targets = torch.tensor([1.0, 0.0, 1.0, 0.0])

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

# verificación manual: Sigmoid + BCE
sigmoid = torch.sigmoid(logits)
bce = nn.BCELoss()(sigmoid, targets)
print("BCE manual:", bce.item())

Ejemplo 2: Desequilibrio de clases

Ejemplo

import torch
import torch.nn as nn

# pesos de la clase positiva: aumentar la importancia de las muestras positivas
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  # muy pocas muestras positivas

loss = criterion(logits, targets)
print("Pérdida BCE ponderada:", loss.item())

Ejemplo 3: Clasificación de múltiples etiquetas

Ejemplo

import torch
import torch.nn as nn

# clasificación binaria de múltiples etiquetas
criterion = nn.BCEWithLogitsLoss()

# batch=4, 5 clases, cada una puede ser 0 o 1
logits = torch.randn(4, 5)
labels = torch.randint(0, 2, (4, 5)).float()

loss = criterion(logits, labels)
print("Pérdida de múltiples etiquetas:", loss.item())

Casos de uso

  • Clasificación binaria: etiqueta única
  • Clasificación de múltiples etiquetas: cada etiqueta es independiente
  • Desequilibrio de clases: usar pos_weight

Nota: la entrada son logits, no se necesita aplicar Sigmoid previamente.


PyTorch torch.nn 参考手册Manual de referencia de PyTorch torch.nn

Otras extensiones