Spec-Zone.ru › PyTorch 2.14

MultiLabelSoftMarginLoss

class torch.nn.MultiLabelSoftMarginLoss(weight=None, size_average=None, reduce=None, reduction='mean') [source]

Создаёт функцию потерь, оптимизирующую многометочную стратегию «один против всех» на основе максимальной энтропии для входных данных xx и целевых значений yy размера (N,C)(N, C). Для каждого примера в мини-пакете:

loss(x,y)=−1C∗∑iy[i]∗log⁡((1+exp⁡(−x[i]))−1)+(1−y[i])∗log⁡(exp⁡(−x[i])(1+exp⁡(−x[i])))loss(x, y) = - \frac{1}{C} * \sum_i y[i] * \log((1 + \exp(-x[i]))^{-1}) + (1-y[i]) * \log\left(\frac{\exp(-x[i])}{(1 + \exp(-x[i]))}\right)

где i∈{0,⋯,x.nElement()−1}i \in \left\{0, \; \cdots , \; \text{x.nElement}() - 1\right\}, y[i]∈{0,1}y[i] \in \left\{0, \; 1\right\}.

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

Примеры

>>> loss = nn.MultiLabelSoftMarginLoss()
>>> input = torch.randn(3, 5, requires_grad=True)
>>> target = torch.empty(3, 5).random_(2)
>>> output = loss(input, target)
>>> output.backward()
forward(input, target) [source]

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

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

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.MultiLabelSoftMarginLoss.html

Spec-Zone.ru

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