Spec-Zone.ru › PyTorch 2.14

MultiLabelMarginLoss

class torch.nn.modules.loss.MultiLabelMarginLoss(size_average=None, reduce=None, reduction='mean') [исходный код]

Создаёт функцию потерь, оптимизирующую hinge-функцию потерь для многоклассовой классификации (функцию потерь на основе отступа) между входом xx (2D-мини-пакет Tensor) и выходом yy (2D-Tensor индексов целевых классов). Для каждого образца в мини-пакете:

loss(x,y)=∑ijmax⁡(0,1−(x[y[j]]−x[i]))x.size(0)\text{loss}(x, y) = \sum_{ij}\frac{\max(0, 1 - (x[y[j]] - x[i]))}{\text{x.size}(0)}

где x∈{0,⋯,x.size(0)−1}x \in \left\{0, \; \cdots , \; \text{x.size}(0) - 1\right\}, y∈{0,⋯,y.size(0)−1}y \in \left\{0, \; \cdots , \; \text{y.size}(0) - 1\right\}, 0≤y[j]≤x.size(0)−10 \leq y[j] \leq \text{x.size}(0)-1, и i≠y[j]i \neq y[j] для всех ii и jj.

yy и xx должны иметь одинаковый размер.

Функция потерь учитывает только непрерывный блок неотрицательных целевых значений, начинающийся с первого элемента.

Это позволяет задавать для разных образцов переменное количество целевых классов.

Параметры:
  • 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'
Форма:
  • Входные данные: (C)(C) или (N,C)(N, C), где N — размер пакета, а C — количество классов.
  • Целевые данные: (C)(C) или (N,C)(N, C); метки целевых данных дополняются значением -1, чтобы их форма совпадала с формой входных данных.
  • Выходные данные: скаляр. Если reduction имеет значение 'none', то (N)(N).

Примеры

>>> 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) [исходный код]

Выполняет прямой проход.

Тип возвращаемого значения:

Tensor

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API