MultiLabelMarginLoss
-
class torch.nn.modules.loss.MultiLabelMarginLoss(size_average=None, reduce=None, reduction='mean')[исходный код] -
Создаёт функцию потерь, оптимизирующую hinge-функцию потерь для многоклассовой классификации (функцию потерь на основе отступа) между входом (2D-мини-пакет
Tensor) и выходом (2D-Tensorиндексов целевых классов). Для каждого образца в мини-пакете:где , , , и для всех и .
и должны иметь одинаковый размер.
Функция потерь учитывает только непрерывный блок неотрицательных целевых значений, начинающийся с первого элемента.
Это позволяет задавать для разных образцов переменное количество целевых классов.
- Параметры:
-
-
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'
-
size_average (bool, необязательный) – Устарел (см.
- Форма:
-
- Входные данные: или , где
N— размер пакета, аC— количество классов. - Целевые данные: или ; метки целевых данных дополняются значением -1, чтобы их форма совпадала с формой входных данных.
- Выходные данные: скаляр. Если
reductionимеет значение'none', то .
- Входные данные: или , где
Примеры
>>> loss = nn.MultiLabelMarginLoss() >>> x = torch.FloatTensor([[0.1, 0.2, 0.4, 0.8]]) >>> # for target y, only consider labels 3 and 0, not after label -1 >>> y = torch.LongTensor([[3, 0, -1, 1]]) >>> # 0.25 * ((1-(0.1-0.2)) + (1-(0.1-0.4)) + (1-(0.8-0.2)) + (1-(0.8-0.4))) >>> loss(x, y) tensor(0.85...)
-
forward(input, target)[исходный код] -
Выполняет прямой проход.
- Тип возвращаемого значения:
© 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.MultiLabelMarginLoss.html