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 авторов В. Балнтаса, Э. Рибы и др.
Функция потерь для каждого образца в мини-пакетном наборе:
где
Норма рассчитывается с использованием заданного значения p, и для обеспечения числовой устойчивости добавляется небольшая константа .
См. также
TripletMarginWithDistanceLoss, которое вычисляет потерю тройки с границей для входных тензоров с помощью настраиваемой функции расстояния.- Параметры
-
- margin (float, необязательно) – Значение по умолчанию: .
- p (int, необязательно) – Степень нормы для расстояния между парами. Значение по умолчанию: .
- eps (float, необязательно) – Малая константа для числовой устойчивости. Значение по умолчанию: .
-
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, eps=1e-7) >>> 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/2.1/generated/torch.nn.TripletMarginLoss.html