Функция torch.nn.BCEWithLogitsLoss в PyTorch

PyTorch torch.nn 参考手册Справочное руководство PyTorch torch.nn


torch.nn.BCEWithLogitsLossЭто функция потерь бинарной кросс-энтропии (с Sigmoid) в PyTorch.

Она объединяет Sigmoid и BCE, что делает её численно более устойчивой; используется для задач бинарной классификации.

Определение функции

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

Параметры:

  • weight: Ручные веса
  • pos_weight: Вес положительного класса, используется при дисбалансе классов

Примеры использования

Пример 1: Базовое использование

Пример

import torch
import torch.nn as nn

criterion = nn.BCEWithLogitsLoss()

# Ненормализованные логиты
logits = torch.tensor([2.0, -1.0, 0.5, -3.0])
# Бинарные метки
targets = torch.tensor([1.0, 0.0, 1.0, 0.0])

loss = criterion(logits, targets)
print("Потеря BCE:", loss.item())

# Ручная проверка: Sigmoid + BCE
sigmoid = torch.sigmoid(logits)
bce = nn.BCELoss()(sigmoid, targets)
print("BCE вручную:", bce.item())

Пример 2: Дисбаланс классов

Пример

import torch
import torch.nn as nn

# Вес положительного класса: увеличить важность положительных примеров
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  # Положительный класс встречается редко

loss = criterion(logits, targets)
print("Взвешенная потеря BCE:", loss.item())

Пример 3: Многометочная классификация

Пример

import torch
import torch.nn as nn

# Многометочная бинарная классификация
criterion = nn.BCEWithLogitsLoss()

# batch=4, 5 классов, каждый может быть 0 или 1
logits = torch.randn(4, 5)
labels = torch.randint(0, 2, (4, 5)).float()

loss = criterion(logits, labels)
print("Многометочная потеря:", loss.item())

Сценарии использования

  • Бинарная классификация: Одна метка
  • Многометочная классификация: Каждая метка независима
  • Дисбаланс классов: Используйте pos_weight

Примечание: на входе — logits, применять Sigmoid заранее не нужно.


PyTorch torch.nn 参考手册Справочное руководство PyTorch torch.nn

Другие расширения