GaussianNLLLoss
-
class torch.nn.GaussianNLLLoss(*, full=False, eps=1e-06, reduction='mean')[source] -
Потеря Гауссова отрицательного логарифма правдоподобия.
Цели рассматриваются как выборки из гауссовых распределений с ожидаемыми значениями и дисперсиями, предсказанными нейронной сетью. Для тензора
target, моделируемого как имеющий гауссово распределение с тензором ожидаемых значенийinputи тензором положительных дисперсийvar, потеря вычисляется как:где
epsиспользуется для обеспечения устойчивости. По умолчанию постоянная составляющая функции потерь опущена, еслиfullне равноTrue. Еслиvarне имеет того же размера, что иinput(из-за предположения гомоскедастичности), оно должно иметь размер 1 в последнем измерении или на одно измерение меньше (при одинаковых размерах в других измерениях) для корректного векторизации.- Параметры:
-
-
full (bool, необязательно) – включать постоянную составляющую в вычисление потери. По умолчанию:
False. -
eps (float, необязательно) – значение для ограничения
var(см. примечание ниже), для обеспечения устойчивости. По умолчанию: 1e-6. -
reduction (str, необязательно) – указывает способ снижения выходного значения:
'none'|'mean'|'sum'.'none': без снижения,'mean': среднее значение потерь всех элементов батча,'sum': сумма потерь всех элементов батча. По умолчанию:'mean'.
-
full (bool, необязательно) – включать постоянную составляющую в вычисление потери. По умолчанию:
- Форма:
-
- Вход: или где означает любое количество дополнительных измерений
- Цель: или , такая же форма, как вход, или такая же форма, как вход, но с одним измерением равным 1 (для векторизации)
- Дисперсия: или , такая же форма, как вход, или такая же форма, как вход, но с одним измерением равным 1, или такая же форма, как вход, но с одним измерением меньше (для векторизации)
- Вывод: скаляр, если
reductionравно'mean'(по умолчанию) или'sum'. Еслиreductionравно'none', то , такая же форма, как вход
- Примеры::
-
>>> 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