mindspore.ops.pdist

mindspore.ops.pdist(input, p=2.0)[源代码]

计算输入中每对行向量之间的p-范数距离。如果输入Tensor input 的shape为 \((N, M)\),那么输出就是一个shape为 \((N * (N - 1) / 2,)\) 的Tensor。 如果输入 input 的shape为 \((*B, N, M)\),那么输出就是一个shape为 \((*B, N * (N - 1) / 2)\) 的Tensor。

\[y[n] = \sqrt[p]{{\mid x_{i} - x_{j} \mid}^p}\]

其中 \(x_{i}, x_{j}\) 是输入中两个不同的行向量。

参数:
  • input (Tensor) - 输入Tensor input ,其shape为 \((*B, N, M)\) ,其中 \(*B\) 表示批处理大小,可以是多维度。类型:float16、float32或float64。

  • p (float) - 范数距离的阶, \(p∈[0, ∞)\) 。默认值: 2.0

返回:

Tensor,类型与 input 一致。

异常:
  • TypeError - input 不是Tensor。

  • TypeError - input 的数据类型不是float16、float32、float64。

  • TypeError - p 不是float。

  • ValueError - p 是负数。

  • ValueError - input 的维度小于2。

支持平台:

GPU CPU

样例:

>>> import numpy as np
>>> from mindspore import Tensor, ops
>>> x = Tensor(np.array([[1.0, 1.0], [2.0, 2.0], [3.0, 3.0]]).astype(np.float32))
>>> y = ops.pdist(x, p=2.0)
>>> print(y)
[1.4142135 2.828427 1.4142135]