MultiMarginLoss
-
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/2.1/generated/torch.nn.MultiMarginLoss.html