Функция потери TripletMarginLoss
-
class torch.nn.TripletMarginLoss(margin=1.0, p=2.0, eps=1e-06, swap=False, size_average=None, reduce=None, reduction='mean')[source] -
Создаёт критерий, измеряющий потерю триплета, заданный входными тензорами , , и порогом, значение которого больше . Используется для измерения относительной схожести между выборками. Триплет состоит из
a,pиn(т.е.,anchor,positive examplesиnegative examplesсоответственно). Форматы всех входных тензоров должны быть .Подробное описание перестановки расстояний представлено в статье Learning shallow convolutional feature descriptors with triplet losses В. Балнтаса, Э. Рибы и др.
Функция потерь для каждой выборки в мини-пакетной выборке:
где
См. также
TripletMarginWithDistanceLoss, который вычисляет потерю триплетного порога для входных тензоров с помощью настраиваемой функции расстояния.- Параметры:
-
- margin (float, необязательно) – Значение по умолчанию: .
- p (int, необязательно) – Степень нормы для парного расстояния. Значение по умолчанию: .
-
swap (bool, необязательно) – Перестановка расстояний подробно описана в статье
Learning shallow convolutional feature descriptors with triplet lossesВ. Балнтаса, Э. Рибы и др. Значение по умолчанию:False. -
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'
- Форма:
-
- Вход: или где — размерность вектора.
- Выход: Тензор формы , если
reductionравно'none'и форма входа ; скаляр в противном случае.
Примеры:
>>> triplet_loss = nn.TripletMarginLoss(margin=1.0, p=2) >>> anchor = torch.randn(100, 128, requires_grad=True) >>> positive = torch.randn(100, 128, requires_grad=True) >>> negative = torch.randn(100, 128, requires_grad=True) >>> output = triplet_loss(anchor, positive, negative) >>> output.backward()
© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/1.13/generated/torch.nn.TripletMarginLoss.html