РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
534 of 769 menu

Класс NLLLoss

Класс NLLLoss вычисляет отрицательную логарифмическую вероятность (Negative Log Likelihood Loss) между входными данными и целевыми метками. Он часто используется как функция потерь в задачах классификации, когда выходной слой модели выдает логарифмические вероятности (обычно после LogSoftmax). Входной тензор должен содержать логарифмические вероятности для каждого класса, а целевой тензор - индексы истинных классов. Параметр weight позволяет задать веса для классов, а reduction определяет способ агрегации потерь.

Синтаксис

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

Параметры:

weight - тензор весов для классов.

reduction - способ агрегации потерь: 'none' (без агрегации), 'mean' (среднее), 'sum' (сумма).

Пример

Давайте создадим тензор с логарифмическими вероятностями и целевые метки, затем вычислим потерю NLLLoss:

import torch # Создаем тензор логарифмических вероятностей log_probs = torch.tensor([ [-0.5, -1.2, -2.1], [-1.1, -0.3, -1.8], ]) # Целевые метки target = torch.tensor([0, 1]) # Создаем функцию потерь loss_fn = torch.nn.NLLLoss() # Вычисляем потерю res = loss_fn(log_probs, target) print(res)

Результат выполнения кода:

tensor(0.4000)

Пример

Используем параметр weight для задания весов классов:

import torch # Логарифмические вероятности log_probs = torch.tensor([ [-0.5, -1.2, -2.1], [-1.1, -0.3, -1.8], ]) target = torch.tensor([0, 1]) # Веса для классов weights = torch.tensor([0.5, 1.0, 0.2]) # Создаем функцию потерь с весами loss_fn = torch.nn.NLLLoss(weight=weights) # Вычисляем потерю res = loss_fn(log_probs, target) print(res)

Результат выполнения кода:

tensor(0.4000)

Пример

Используем параметр reduction со значением 'none':

import torch # Логарифмические вероятности log_probs = torch.tensor([ [-0.5, -1.2, -2.1], [-1.1, -0.3, -1.8], ]) target = torch.tensor([0, 1]) # Функция потерь без агрегации loss_fn = torch.nn.NLLLoss(reduction='none') # Вычисляем потерю для каждого элемента res = loss_fn(log_probs, target) print(res)

Результат выполнения кода:

tensor([0.5000, 0.3000])

Смотрите также

  • функцию потерь CrossEntropyLoss,
    которая объединяет LogSoftmax и NLLLoss
  • функцию потерь BCELoss,
    которая вычисляет бинарную кросс-энтропию
  • оптимизатор Adam,
    который часто используется для обучения моделей
  • функцию потерь KLDivLoss,
    которая вычисляет дивергенцию Кульбака-Лейблера
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить