MultiMarginLoss
-
class torch.nn.MultiMarginLoss(p=1, margin=1.0, weight=None, size_average=None, reduce=None, reduction='mean')[source] -
Создает функцию потерь, оптимизирующую функцию потерь на основе шарнирной функции для многоклассовой классификации (функцию потерь на основе отступа) между входом (мини-пакетом
Tensorразмерности 2) и выходом (который представляет собой одномерный тензор индексов целевых классов, ):Для каждого примера мини-пакета функция потерь для одномерного входа и скалярного выхода имеет вид:
где и .
При необходимости можно задать различные веса классов, передав в конструктор одномерный тензор
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.MultiMarginLoss.html