Spec-Zone.ru › PyTorch 2.14

TripletMarginLoss

class torch.nn.TripletMarginLoss(margin=1.0, p=2.0, eps=1e-06, swap=False, size_average=None, reduce=None, reduction='mean') [source]

Создаёт функцию потерь, вычисляющую триплетную потерю для входных тензоров x1x1, x2x2, x3x3 и отступа со значением больше 00. Она используется для измерения относительного сходства между образцами. Триплет состоит из a, p и n (то есть, соответственно, anchor, positive examples и negative examples). Формы всех входных тензоров должны быть (N,D)(N, D).

Замена расстояния подробно описана в статье Обучение неглубоких дескрипторов сверточных признаков с помощью триплетных функций потерь В. Балнтаса, Э. Рибы и др.

Функция потерь для каждого образца в мини-пакете имеет вид:

L(a,p,n)=max⁡{d(ai,pi)−d(ai,ni)+margin,0}L(a, p, n) = \max \{d(a_i, p_i) - d(a_i, n_i) + {\rm margin}, 0\}

где

d(xi,yi)=∥xi−yi∥pd(x_i, y_i) = \left\lVert {\bf x}_i - {\bf y}_i \right\rVert_p

Норма вычисляется с использованием указанного значения p; для численной устойчивости добавляется небольшая константа ε\varepsilon.

См. также TripletMarginWithDistanceLoss, который вычисляет триплетную потерю с отступом для входных тензоров с использованием пользовательской функции расстояния.

Параметры:
  • margin (float, необязательно) – По умолчанию: 11.
  • p (int, необязательно) – Степень нормы для попарного расстояния. По умолчанию: 22.
  • eps (float, необязательно) – Небольшая константа для численной устойчивости. По умолчанию: 1e−61e-6.
  • 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'
Форма:
  • Входные данные: (N,D)(N, D) или (D)(D), где DD — размерность вектора.
  • Выходные данные: тензор формы (N)(N), если reduction равно 'none' и форма входных данных — (N,D)(N, D); в противном случае — скаляр.

Примеры:

>>> 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]

Выполняет прямой проход.

Тип возвращаемого значения:

Tensor

© 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.TripletMarginLoss.html

Spec-Zone.ru

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