Spec-Zone.ru › PyTorch 2

MultiLabelMarginLoss

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

Создаёт критерий, который оптимизирует потерю отсечения для многоклассовой многоклассовой классификации (потеря на основе отступа) между входом xx (двумерная мини-группа Tensor) и выходом yy (который является двумерным 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 должны иметь одинаковый размер.

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

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

Parameters
  • size_average (bool, optional) – Deprecated (see reduction). По умолчанию потери усредняются по каждому элементу потерь в пакете. Обратите внимание, что для некоторых потерь существует несколько элементов на образец. Если поле size_average установлено в False, потери суммируются для каждой мини-группы. Игнорируется, когда reduce равно False. По умолчанию: True
  • reduce (bool, optional) – Deprecated (see reduction). По умолчанию потери усредняются или суммируются по наблюдениям для каждой мини-группы в зависимости от size_average. Когда reduce равно False, возвращает потерю на элемент пакета и игнорирует size_average. По умолчанию: True
  • reduction (str, optional) – Указывает на применение уменьшения к выводу: 'none' | 'mean' | 'sum'. 'none': уменьшение не будет применено, 'mean': сумма вывода будет разделена на количество элементов в выводе, 'sum': вывод будет суммирован. Примечание: size_average и reduce находятся в процессе устаревания, и пока что указание любого из этих двух аргументов переопределит reduction. По умолчанию: 'mean'
Shape:
  • Input: (C)(C) или (N,C)(N, C), где N — размер пакета, а C — количество классов.
  • Target: (C)(C) или (N,C)(N, C), целевые метки, дополненные -1, обеспечивая одинаковую форму с входом.
  • Output: скаляр. Если 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...)

© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/2.1/generated/torch.nn.MultiLabelMarginLoss.html

Spec-Zone.ru

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