SmoothL1Loss
-
class torch.nn.SmoothL1Loss(size_average=None, reduce=None, reduction='mean', beta=1.0)[source] -
Создаёт критерий, который использует квадратичный член, если абсолютная элементная ошибка меньше бета, и член L1 в противном случае. Он менее чувствителен к выбросам, чем
torch.nn.MSELoss, и в некоторых случаях предотвращает взрыв градиентов (например, см. статью Fast R-CNN Росса Гиршика).Для пакета размером , неуменьшенная потеря может быть описана как:
где
Если
reductionнеnone, то:Примечание
Потеря Smooth L1 — это точно
L1Loss, но с частью заменено квадратичной функцией, такой что её наклон равен 1 в . Квадратичный сегмент сглаживает потерю L1 вблизи .Примечание
Потеря Smooth L1 тесно связана с
HuberLoss, являясь эквивалентной к (обратите внимание, что гиперпараметр бета Smooth L1 также известен как дельта для Huber). Это приводит к следующим различиям:- При beta -> 0, потеря Smooth L1 стремится к
L1Loss, в то время какHuberLossстремится к постоянной потере 0. При beta равной 0, потеря Smooth L1 эквивалентна потере L1. - При beta -> , потеря Smooth L1 стремится к постоянной потере 0, в то время как
HuberLossстремится кMSELoss. - Для Smooth L1 loss, при изменении beta, сегмент L1 потери имеет постоянный наклон 1. Для
HuberLoss, наклон сегмента L1 равен beta.
- Параметры
-
-
size_average (bool, необязательно) – Устарело (см.
reduction). По умолчанию потери усредняются по каждому элементу потерь в пакете. Обратите внимание, что для некоторых потерь есть несколько элементов на образец. Если полеsize_averageустановлено вFalse, потери вместо этого суммируются для каждого мини-пакета. Игнорируется, когдаreduceравноFalse. По умолчанию:True -
reduce (bool, необязательно) – Устарело (см.
reduction). По умолчанию потери усредняются или суммируются по наблюдениям для каждого мини-пакета в зависимости отsize_average. КогдаreduceравноFalse, возвращается потеря на каждый элемент пакета вместо этого, иsize_averageигнорируется. По умолчанию:True -
reduction (str, необязательно) – Указывает уменьшение, которое следует применить к выводу:
'none'|'mean'|'sum'.'none': не будет применено уменьшение,'mean': сумма вывода будет разделена на количество элементов в выводе,'sum': вывод будет суммирован. Примечание:size_averageиreduceнаходятся в процессе устаревания, и пока что указание любого из этих двух аргументов переопределитreduction. По умолчанию:'mean' - beta (float, необязательно) – Указывает порог, при котором происходит изменение между L1 и L2 потерями. Значение должно быть неотрицательным. По умолчанию: 1.0
-
size_average (bool, необязательно) – Устарело (см.
- При beta -> 0, потеря Smooth L1 стремится к
- Форма:
-
- Вход: , где означает любое количество измерений.
- Цель: , такая же форма, как у входа.
- Выход: скаляр. Если
reductionравно'none', то , такая же форма, как у входа.
© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/2.1/generated/torch.nn.SmoothL1Loss.html