Spec-Zone.ru › PyTorch 1

Функция потери 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)+porog,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

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

Параметры:
  • margin (float, необязательно) – Значение по умолчанию: 11.
  • p (int, необязательно) – Степень нормы для парного расстояния. Значение по умолчанию: 22.
  • 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)
>>> 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

Spec-Zone.ru

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