MultiMarginLoss
-
class torch.nn.modules.loss.MultiMarginLoss(p=1, margin=1.0, weight=None, size_average=None, reduce=None, reduction='mean')[source] -
Создаёт функцию потерь, оптимизирующую функцию потерь типа hinge для многоклассовой классификации (функцию потерь на основе отступа) между входом (двумерным мини-пакетом
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...)
-
forward(input, target)[source] -
Выполняет прямой проход.
- Тип возвращаемого значения:
© 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.modules.loss.MultiMarginLoss.html