Функция cosine_similarity
Функция cosine_similarity вычисляет косинусное сходство
между двумя тензорами вдоль указанной размерности.
Косинусное сходство измеряет косинус угла между двумя ненулевыми
векторами и возвращает значение в диапазоне от -1 до 1,
где 1 означает полное совпадение направления,
-1 - противоположное направление, а 0 - ортогональность.
Первый и второй параметры функции принимают тензоры x1 и x2,
третий параметр задает размерность для вычисления сходства.
Синтаксис
torch.nn.functional.cosine_similarity(x1, x2, dim=1, eps=1e-8)
Пример
Давайте вычислим косинусное сходство между двумя векторами:
import torch
import torch.nn.functional as F
t1 = torch.tensor([1.0, 2.0, 3.0])
t2 = torch.tensor([4.0, 5.0, 6.0])
res = F.cosine_similarity(t1, t2, dim=0)
print(res)
Результат выполнения кода:
tensor(0.9746)
Пример
Вычислим косинусное сходство между двумя матрицами вдоль размерности 1 (по строкам):
import torch
import torch.nn.functional as F
t1 = torch.tensor([
[1.0, 2.0, 3.0],
[4.0, 5.0, 6.0],
])
t2 = torch.tensor([
[7.0, 8.0, 9.0],
[1.0, 1.0, 1.0],
])
res = F.cosine_similarity(t1, t2, dim=1)
print(res)
Результат выполнения кода:
tensor([0.9594, 0.9636])
Пример
Используем параметр eps для предотвращения деления на ноль
при нулевой длине векторов:
import torch
import torch.nn.functional as F
t1 = torch.zeros(3)
t2 = torch.ones(3)
res = F.cosine_similarity(t1, t2, dim=0, eps=1e-6)
print(res)
Результат выполнения кода:
tensor(0.)
Смотрите также
-
функцию
normalize,
которая выполняет нормализацию тензора по заданной размерности -
функцию
pairwise_distance,
которая вычисляет попарное расстояние между векторами -
функцию
pdist,
которая вычисляет расстояние между строками тензора -
функцию
cosine_embedding_loss,
которая реализует функцию потерь на основе косинусного сходства