TripletMarginLoss
-
class torch.nn.modules.loss.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). Формы всех входных тензоров должны быть .Перестановка расстояний подробно описана в статье Обучение неглубоких дескрипторов свёрточных признаков с помощью триплетных функций потерь В. Балнтаса, Э. Рибы и др.
Функция потерь для каждого образца в мини-пакете имеет вид:
где
Норма вычисляется с использованием указанного значения 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()
-
forward(anchor, positive, negative)[source] -
Выполняет прямой проход.
- Тип возвращаемого значения:
© 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.modules.loss.TripletMarginLoss.html