Spec-Zone.ru › PyTorch 2

GaussianNLLLoss

class torch.nn.GaussianNLLLoss(*, full=False, eps=1e-06, reduction='mean') [source]

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

Целевые значения рассматриваются как выборки из гауссовых распределений с математическими ожиданиями и дисперсиями, предсказанными нейронной сетью. Для тензора 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, optional) – включать постоянную часть в вычисление потерь. По умолчанию: False.
  • eps (float, optional) – значение, используемое для ограничения var (см. примечание ниже), для устойчивости. По умолчанию: 1e-6.
  • reduction (str, optional) – определяет способ понижения размерности результата:'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 по нейронным сетям (ICNN’94), Орландо, ФЛ, США, 1994, с. 55-60 т.1, doi: 10.1109/ICNN.1994.374138.

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

Spec-Zone.ru

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