MultiLabelMarginLoss
-
class torch.nn.MultiLabelMarginLoss(size_average=None, reduce=None, reduction='mean')[source] -
Создаёт критерий, который оптимизирует многоклассовую многоклассовую потерю отсечки (потерю на основе отступа) между входом (двумерная мини-парт
Tensor) и выходом (который представляет собой двумерный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...)
© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/1.13/generated/torch.nn.MultiLabelMarginLoss.html