Многократное потери по расстоянию
-
class torch.nn.MultiMarginLoss(p=1, margin=1.0, weight=None, size_average=None, reduce=None, reduction='mean')[source] -
Создаёт критерий, который оптимизирует потери по отступу для многоклассовой классификации (основанные на отступе потери) между входом (двумерный мини-пакет
Tensor) и выходом (который является одномерным тензором индексов целевого класса, ):Для каждого образца мини-пакета потери по отношению к одномерному входу и скалярному выходу вычисляются следующим образом:
где и .
Необязательно, вы можете присвоить разные веса классам, передав одномерный
weightтензор в конструктор.Функция потерь тогда принимает вид:
- Параметры:
-
- p (int, необязательно) – Имеет значение по умолчанию . Поддерживаются только значения и .
- margin (float, необязательно) – Имеет значение по умолчанию .
-
weight (Tensor, необязательно) – ручной масштабирующий вес, присваиваемый каждому классу. Если задан, он должен быть тензором размера
C. В противном случае он обрабатывается так, как будто все значения равны единице. -
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'
- Форма:
-
- Вход: или , где — размер пакета, а — количество классов.
- Цель: или , где каждое значение равно .
- Выход: скаляр. Если
reductionравно'none', то форма такая же, как у цели.
Примеры:
>>> loss = nn.MultiMarginLoss() >>> x = torch.tensor([[0.1, 0.2, 0.4, 0.8]]) >>> y = torch.tensor([3]) >>> # 0.25 * ((1-(0.8-0.1)) + (1-(0.8-0.2)) + (1-(0.8-0.4))) >>> loss(x, y) tensor(0.32...)
© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/1.13/generated/torch.nn.MultiMarginLoss.html