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

Класс PoissonNLLLoss

Класс PoissonNLLLoss вычисляет отрицательную логарифмическую правдоподобность для распределения Пуассона. Первым параметром конструктор принимает флаг log_input, который указывает, передаются ли входные значения в логарифмическом масштабе. Вторым параметром можно передать флаг full, который включает вычисление полной логарифмической правдоподобности. Третьим параметром задаётся вес для каждого элемента потерь. Четвёртым параметром указывается режим редукции потерь.

Синтаксис

torch.nn.PoissonNLLLoss(log_input=True, full=False, weight=None, reduction='mean')

Параметры:

  • log_input - если True, то входные значения считаются логарифмом от ожидаемых значений; если False, то входные значения считаются непосредственно ожидаемыми значениями
  • full - если True, то в потери добавляется член log(target!), что даёт полную логарифмическую правдоподобность
  • weight - тензор весов для каждого элемента
  • reduction - режим редукции потерь: 'none', 'mean' или 'sum'

Пример с log_input=True

Создадим функцию потерь и применим её к тензорам с логарифмами ожидаемых значений:

import torch criterion = torch.nn.PoissonNLLLoss(log_input=True) input = torch.tensor([1.5, 2.0, 3.2]) target = torch.tensor([2, 3, 4]) loss = criterion(input, target) print(loss)

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

tensor(0.3938)

Пример с log_input=False

Применим функцию потерь к тензорам с ожидаемыми значениями, а не с логарифмами:

import torch criterion = torch.nn.PoissonNLLLoss(log_input=False) input = torch.tensor([4.0, 5.0, 6.0]) target = torch.tensor([3, 4, 5]) loss = criterion(input, target) print(loss)

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

tensor(0.5819)

Пример с full=True

Используем флаг full для включения полной логарифмической правдоподобности:

import torch criterion = torch.nn.PoissonNLLLoss(log_input=True, full=True) input = torch.tensor([0.5, 1.0, 1.5]) target = torch.tensor([1, 2, 3]) loss = criterion(input, target) print(loss)

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

tensor(0.8904)

Пример с reduction='none'

Установим режим редукции 'none' для получения поэлементных потерь:

import torch criterion = torch.nn.PoissonNLLLoss(log_input=True, reduction='none') input = torch.tensor([1.2, 2.3, 3.4]) target = torch.tensor([2, 3, 4]) loss = criterion(input, target) print(loss)

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

tensor([-0.8109, -0.3942, 0.0916])

Пример с весами

Применим веса для каждого элемента потерь:

import torch weight = torch.tensor([0.5, 1.0, 2.0]) criterion = torch.nn.PoissonNLLLoss(log_input=True, weight=weight) input = torch.tensor([1.0, 2.0, 3.0]) target = torch.tensor([1, 2, 3]) loss = criterion(input, target) print(loss)

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

tensor(0.2593)

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

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