Spec-Zone.ru › PyTorch 2.14

CosineEmbeddingLoss

class torch.nn.CosineEmbeddingLoss(margin=0.0, size_average=None, reduce=None, reduction='mean') [исходный код]

Создаёт функцию потерь, вычисляющую значение потерь по входным тензорам x1x_1, x2x_2 и метке Tensor yy со значениями 1 или -1. Используйте (y=1y=1), чтобы максимизировать косинусное сходство двух входных данных, и (y=−1y=-1) в противном случае. Обычно используется для обучения нелинейным эмбеддингам или в обучении с частичным привлечением учителя.

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

loss(x,y)={1−cos⁡(x1,x2),if y=1max⁡(0,cos⁡(x1,x2)−margin),if y=−1\text{loss}(x, y) = \begin{cases} 1 - \cos(x_1, x_2), & \text{if } y = 1 \\ \max(0, \cos(x_1, x_2) - \text{margin}), & \text{if } y = -1 \end{cases}
Параметры:
  • margin (float, необязательный) – Должно быть числом от −1-1 до 11; рекомендуется значение от 00 до 0.50.5. Если margin не задан, используется значение по умолчанию 00.
  • 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'
Форма:
  • Входной тензор 1: (N,D)(N, D) или (D)(D), где N — размер пакета, а D — размерность эмбеддинга.
  • Входной тензор 2: (N,D)(N, D) или (D)(D), той же формы, что и входной тензор 1.
  • Целевой тензор: (N)(N) или ()().
  • Выходные данные: если reduction равно 'none', то (N)(N), иначе скаляр.

Примеры

>>> loss = nn.CosineEmbeddingLoss()
>>> input1 = torch.randn(3, 5, requires_grad=True)
>>> input2 = torch.randn(3, 5, requires_grad=True)
>>> target = torch.ones(3)
>>> output = loss(input1, input2, target)
>>> output.backward()
forward(input1, input2, target) [исходный код]

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

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

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.CosineEmbeddingLoss.html

Spec-Zone.ru

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