Spec-Zone.ru › PyTorch 2.14

GaussianNLLLoss

class torch.nn.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 (в силу предположения о гомоскедастичности), для корректного broadcasting он должен иметь либо последнюю размерность, равную 1, либо на одну размерность меньше (при совпадении всех остальных размеров).

Параметры:
  • full (bool, необязательный) – включать ли постоянный член в вычисление функции потерь. Значение по умолчанию: False.
  • eps (float, необязательный) – значение, используемое для ограничения var (см. примечание ниже) с целью обеспечения стабильности. Значение по умолчанию: 1e-6.
  • reduction (str, необязательный) – задаёт способ сведения выходных значений:'none' | 'mean' | 'sum'. 'none': сведение не выполняется, 'mean': выходное значение — среднее значение функции потерь по всем элементам пакета, 'sum': выходное значение — сумма значений функции потерь по всем элементам пакета. Значение по умолчанию: 'mean'.
Форма:
  • Вход: (N,∗)(N, *) или (∗)(*), где ∗* означает любое количество дополнительных размерностей
  • Целевое значение: (N,∗)(N, *) или (∗)(*): той же формы, что и вход, либо той же формы, что и вход, но с одной размерностью, равной 1 (для поддержки broadcasting)
  • Дисперсия: (N,∗)(N, *) или (∗)(*): той же формы, что и вход, либо той же формы, что и вход, но с одной размерностью, равной 1, либо той же формы, что и вход, но на одну размерность меньше (для поддержки broadcasting), либо скалярное значение
  • Выход: скаляр, если 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. and Weigend, A. S., “Estimating the mean and variance of the target probability distribution”, Proceedings of 1994 IEEE International Conference on Neural Networks (ICNN’94), Orlando, FL, USA, 1994, pp. 55-60 vol.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.GaussianNLLLoss.html

Spec-Zone.ru

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