Spec-Zone.ru › PyTorch 2.14

torch.cdist

torch.cdist(x1, x2, p=2.0, compute_mode='use_mm_for_euclid_dist_if_necessary') [source]

Вычисляет пакетное расстояние в p-норме между каждой парой векторов-строк из двух наборов.

Параметры:
  • x1 (Tensor) – входной тензор, в котором последние два измерения соответствуют точкам и размерности признаков. Форма может быть D1×D2×⋯×Dn×P×MD_1 \times D_2 \times \cdots \times D_n \times P \times M, где PP — количество точек, а MM — размерность признаков.
  • x2 (Tensor) – входной тензор, в котором последние два измерения также соответствуют точкам и размерности признаков. Форма может быть D1′×D2′×⋯×Dm′×R×MD_1' \times D_2' \times \cdots \times D_m' \times R \times M, где RR — количество точек, а MM — размерность признаков, которая должна совпадать с размерностью признаков x1.
  • p (float) – значение p для вычисления расстояния в p-норме между каждой парой векторов ∈[0,∞]\in [0, \infty].
  • compute_mode (str) – ‘use_mm_for_euclid_dist_if_necessary’ — для вычисления евклидова расстояния (p = 2) будет использоваться умножение матриц, если P > 25 или R > 25 ‘use_mm_for_euclid_dist’ — для вычисления евклидова расстояния (p = 2) всегда будет использоваться умножение матриц ‘donot_use_mm_for_euclid_dist’ — для вычисления евклидова расстояния (p = 2) умножение матриц использоваться не будет. По умолчанию: use_mm_for_euclid_dist_if_necessary.
Тип возвращаемого значения:

Tensor

Если x1 имеет форму B×P×MB \times P \times M, а x2 имеет форму B×R×MB \times R \times M, то выходной тензор будет иметь форму B×P×RB \times P \times R.

Эта функция эквивалентна scipy.spatial.distance.cdist(input,’minkowski’, p=p), если p∈(0,∞)p \in (0, \infty). При p=0p = 0 она эквивалентна scipy.spatial.distance.cdist(input, ‘hamming’) * M. При p=∞p = \infty наиболее близкой функцией scipy является scipy.spatial.distance.cdist(xn, lambda x, y: np.abs(x - y).max()).

Пример

>>> a = torch.tensor([[0.9041, 0.0196], [-0.3108, -2.4423], [-0.4821, 1.059]])
>>> a
tensor([[ 0.9041,  0.0196],
        [-0.3108, -2.4423],
        [-0.4821,  1.0590]])
>>> b = torch.tensor([[-2.1763, -0.4713], [-0.6986, 1.3702]])
>>> b
tensor([[-2.1763, -0.4713],
        [-0.6986,  1.3702]])
>>> torch.cdist(a, b, p=2)
tensor([[3.1193, 2.0959],
        [2.7138, 3.8322],
        [2.2830, 0.3791]])

© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.cdist.html

Spec-Zone.ru

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