Spec-Zone.ru › PyTorch 2.14

GaussianNLLLoss

class torch.nn.modules.loss.GaussianNLLLoss(*, full=False, eps=1e-06, reduction='mean') [источник]

Функция потерь на основе отрицательного логарифма правдоподобия гауссовского распределения.

Целевые значения рассматриваются как выборки из гауссовских распределений с математическими ожиданиями и дисперсиями, предсказанными нейронной сетью. Для тензора target, моделируемого как гауссовское распределение с тензором математических ожиданий input и тензором положительных дисперсий var, функция потерь имеет вид:

loss=12(log⁡(max(var, eps))+(input−target)2max(var, eps))+const.\text{loss} = \frac{1}{2}\left(\log\left(\text{max}\left(\text{var}, \ \text{eps}\right)\right) + \frac{\left(\text{input} - \text{target}\right)^2} {\text{max}\left(\text{var}, \ \text{eps}\right)}\right) + \text{const.}

где eps используется для обеспечения численной устойчивости. По умолчанию постоянный член функции потерь не учитывается, если только full не равно True. Если размер var отличается от размера input (из-за предположения о гомоскедастичности), для корректного широковещания его последняя размерность должна быть равна 1 либо он должен иметь на одну размерность меньше (при совпадении размеров всех остальных размерностей).

Параметры:
  • full (bool, необязательно) – включать ли постоянный член в вычисление функции потерь. По умолчанию: False.
  • eps (float, необязательно) – значение, используемое для ограничения var (см. примечание ниже) в целях устойчивости. По умолчанию: 1e-6.
  • reduction (str, необязательно) – задаёт способ сведения выходных данных:'none' | 'mean' | 'sum'. 'none': сведение не выполняется, 'mean': выходные данные представляют собой среднее значение потерь для всех элементов пакета, 'sum': выходные данные представляют собой сумму потерь для всех элементов пакета. По умолчанию: 'mean'.
Форма:
  • Входные данные: (N,∗)(N, *) или (∗)(*), где ∗* означает любое количество дополнительных размерностей
  • Целевые значения: (N,∗)(N, *) или (∗)(*): той же формы, что и входные данные, или той же формы, что и входные данные, но с одной размерностью, равной 1 (для поддержки широковещания)
  • Дисперсия: (N,∗)(N, *) или (∗)(*): той же формы, что и входные данные, или той же формы, что и входные данные, но с одной размерностью, равной 1, или той же формы, что и входные данные, но на одну размерность меньше (для поддержки широковещания), или скалярное значение
  • Выходные данные: скаляр, если reduction равно 'mean' (по умолчанию) или 'sum'. Если reduction равно 'none', то (N,∗)(N, *), той же формы, что и входные данные

Примеры

>>> loss = nn.GaussianNLLLoss()
>>> input = torch.randn(5, 2, requires_grad=True)
>>> target = torch.randn(5, 2)
>>> var = torch.ones(5, 2, requires_grad=True)  # heteroscedastic
>>> output = loss(input, target, var)
>>> output.backward()
>>> loss = nn.GaussianNLLLoss()
>>> input = torch.randn(5, 2, requires_grad=True)
>>> target = torch.randn(5, 2)
>>> var = torch.ones(5, 1, requires_grad=True)  # homoscedastic
>>> output = loss(input, target, var)
>>> output.backward()

Примечание

Ограничение var не учитывается при вычислении градиентов в autograd, поэтому оно не влияет на градиенты.

Ссылка:

Nix, D. A. и Weigend, A. S., «Оценка среднего значения и дисперсии целевого распределения вероятностей», Материалы Международной конференции IEEE по нейронным сетям 1994 года (ICNN’94), Орландо, Флорида, США, 1994, с. 55–60, т. 1, doi: 10.1109/ICNN.1994.374138.

forward(input, target, var) [источник]

Выполняет прямой проход.

Тип возвращаемого значения:

Tensor

© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.nn.modules.loss.GaussianNLLLoss.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API