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, то:Примечание
Потеря гладкой L1 может быть точно представлена
L1Loss, но с частью заменённой квадратичной функцией, такой, что её наклон равен 1 в точке . Квадратичный сегмент сглаживает потерю L1 вблизи .Примечание
Потеря гладкой L1 тесно связана с
HuberLoss, будучи эквивалентной (обратите внимание, что гиперпараметр бета гладкой L1 также известен как дельта для Хабера). Это приводит к следующим различиям:- По мере стремления бета к 0, потеря гладкой L1 приближается к
L1Loss, в то время какHuberLossприближается к постоянной потере 0. Когда бета равна 0, потеря гладкой L1 эквивалентна потере L1. - По мере стремления бета к , потеря гладкой L1 стремится к постоянной потере 0, в то время как
HuberLossстремится кMSELoss. - Для гладкой L1-потери, при изменении бета, сегмент L1-потери имеет постоянный наклон 1. Для
HuberLossнаклон сегмента L1 равен бета.
- Параметры:
-
-
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, необязательно) – Устарело (см.
- По мере стремления бета к 0, потеря гладкой L1 приближается к
- Форма:
-
- Вход: , где означает любое количество измерений.
- Цель: , такая же форма, как у входа.
- Выход: скаляр. Если
reductionравно'none', то , такая же форма, как у входа.
© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/1.13/generated/torch.nn.SmoothL1Loss.html