РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
448 of 769 menu

Функция pdist

Функция pdist вычисляет попарные расстояния между строками входного тензора. Первым параметром функция принимает тензор размерности (N, M), где N - количество точек, а M - размерность пространства. Вторым параметром можно передать норму p для вычисления расстояния Минковского. По умолчанию используется евклидово расстояние (p=2). Результатом является одномерный тензор длины N * (N - 1) / 2, содержащий все попарные расстояния в порядке (0, 1), (0, 2), ..., (0, N-1), (1, 2), ..., (N-2, N-1).

Синтаксис

torch.pdist(input, p=2)

Параметры

input - тензор размерности (N, M), где N - количество точек, M - размерность пространства.

p - норма расстояния Минковского. По умолчанию равна 2 (евклидово расстояние). Значение должно быть больше или равно 1.

Пример

Давайте вычислим попарные евклидовы расстояния между тремя точками в двумерном пространстве:

import torch t = torch.tensor([ [0.0, 0.0], [3.0, 4.0], [1.0, 1.0], ]) res = torch.pdist(t) print(res)

Результат выполнения кода:

tensor([5.0000, 1.4142, 3.6056])

Получены расстояния: между точкой 0 и 1 - 5.0, между точкой 0 и 2 - 1.4142, между точкой 1 и 2 - 3.6056.

Пример

Давайте вычислим попарные расстояния с нормой Минковского p=1 (манхэттенское расстояние):

import torch t = torch.tensor([ [0.0, 0.0], [3.0, 4.0], [1.0, 1.0], ]) res = torch.pdist(t, p=1) print(res)

Результат выполнения кода:

tensor([7.0000, 2.0000, 5.0000])

Манхэттенские расстояния между точками: между точкой 0 и 1 - 7.0, между точкой 0 и 2 - 2.0, между точкой 1 и 2 - 5.0.

Пример

Давайте вычислим попарные расстояния между четырьмя точками в трёхмерном пространстве:

import torch t = torch.tensor([ [1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0], [2.0, 3.0, 4.0], ]) res = torch.pdist(t) print(res) print(res.shape)

Результат выполнения кода:

tensor([5.1962, 10.3923, 1.7321, 5.1962, 5.1962, 8.6603]) torch.Size([6])

Для 4 точек получено 6 попарных расстояний: 4 * (4 - 1) / 2 = 6.

Пример

Давайте используем pdist с параметром p=3 для вычисления расстояния Минковского третьего порядка:

import torch t = torch.tensor([ [0.0, 0.0, 0.0], [2.0, 2.0, 2.0], [1.0, 1.0, 1.0], ]) res = torch.pdist(t, p=3) print(res)

Результат выполнения кода:

tensor([3.6342, 1.4422, 2.2894])

Смотрите также

  • функцию pairwise_distance,
    которая вычисляет попарные расстояния между векторами двух тензоров
  • функцию cosine_similarity,
    которая вычисляет косинусное сходство между векторами
  • функцию normalize,
    которая выполняет нормализацию тензора по заданной размерности
  • функцию mse_loss,
    которая вычисляет среднеквадратичную ошибку между тензорами
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить