Spec-Zone.ru › PyTorch 1

GaussianNLLLoss

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

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

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

потеря=12(log⁡(max(дисперсия, eps))+(вход−цель)2max(дисперсия, eps))+постоянная.\text{потеря} = \frac{1}{2}\left(\log\left(\text{max}\left(\text{дисперсия}, \ \text{eps}\right)\right) + \frac{\left(\text{вход} - \text{цель}\right)^2} {\text{max}\left(\text{дисперсия}, \ \text{eps}\right)}\right) + \text{постоянная}.

где 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. 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.

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

Spec-Zone.ru

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