Spec-Zone.ru › PyTorch 2

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).

Подробное описание подстановки расстояний приведено в статье Learning shallow convolutional feature descriptors with triplet losses авторов В. Балнтаса, Э. Рибы и др.

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

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()

© 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

Spec-Zone.ru

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