Spec-Zone.ru › PyTorch 2.14

HuberLoss

class torch.nn.HuberLoss(reduction='mean', delta=1.0) [source]

Создает функцию потерь, которая использует квадратичный член, если абсолютная поэлементная ошибка меньше delta, и масштабированный на delta член L1 в противном случае. Эта функция потерь сочетает преимущества L1Loss и MSELoss; область L1, масштабированная на delta, делает функцию потерь менее чувствительной к выбросам, чем MSELoss, а область L2 обеспечивает гладкость вблизи 0 по сравнению с L1Loss. Дополнительные сведения см. в статье функция потерь Хьюбера.

Для пакета размером NN невосведенную функцию потерь можно описать так:

ℓ(x,y)=L={l1,...,lN}T\ell(x, y) = L = \{l_1, ..., l_N\}^T

где

ln={0.5(xn−yn)2,если ∣xn−yn∣<deltadelta∗(∣xn−yn∣−0.5∗delta),иначе l_n = \begin{cases} 0.5 (x_n - y_n)^2, & \text{if } |x_n - y_n| < delta \\ delta * (|x_n - y_n| - 0.5 * delta), & \text{otherwise } \end{cases}

Если reduction не равно none, то:

ℓ(x,y)={mean⁡(L),если reduction=‘mean’;sum⁡(L),если reduction=‘sum’.\ell(x, y) = \begin{cases} \operatorname{mean}(L), & \text{if reduction} = \text{`mean';}\\ \operatorname{sum}(L), & \text{if reduction} = \text{`sum'.} \end{cases}

Примечание

При значении delta, равном 1, эта функция потерь эквивалентна SmoothL1Loss. В общем случае эта функция потерь отличается от SmoothL1Loss в delta раз (delta также обозначается beta в Smooth L1). Дополнительное обсуждение различий в поведении этих двух функций потерь см. в разделе SmoothL1Loss.

Параметры:
  • reduction (str, необязательно) – Указывает способ сведения выходных данных: 'none' | 'mean' | 'sum'. 'none': сведение не выполняется, 'mean': сумма выходных данных делится на количество элементов в выходных данных, 'sum': выходные данные суммируются. По умолчанию: 'mean'
  • delta (float, необязательно) – Задает порог, при котором происходит переход между функциями потерь L1, масштабированной на delta, и L2. Значение должно быть положительным. По умолчанию: 1.0
Форма:
  • Входные данные: (∗)(*), где ∗* означает любое количество измерений.
  • Целевые данные: (∗)(*), форма совпадает с формой входных данных.
  • Выходные данные: скаляр. Если reduction равно 'none', то (∗)(*), форма совпадает с формой входных данных.

Примеры

>>> loss = nn.HuberLoss()
>>> input = torch.randn(3, 5, requires_grad=True)
>>> target = torch.randn(3, 5)
>>> output = loss(input, target)
>>> output.backward()
forward(input, target) [source]

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

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

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.HuberLoss.html

Spec-Zone.ru

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