mindspore.ops.cdist

mindspore.ops.cdist(x, y, p=2.0)[源代码]

计算两个Tensor每对列向量之间的p-norm距离。

参数:
  • x (Tensor) - 输入Tensor,shape为 \((B, P, M)\) ,B维度为0时该维度被忽略,shape为 \((P, M)\) 。在GPU上支持数据类型为[float32, float64],在CPU上支持[float32]。

  • y (Tensor) - 输入Tensor,shape为 \((B, R, M)\) ,与 x 的数据类型一致。

  • p (float,可选) - 计算向量对p-norm距离的P值,P∈[0,∞]。默认值:2.0。

返回:

Tensor,p-范数距离,数据类型与 x 一致,shape为(B, P, R)。

异常:
  • TypeError - xy 不是Tensor。

  • TypeError - xy 的数据类型在GPU环境不是float32或者float64,在CPU环境不是float32。

  • TypeError - p 不是float32。

  • ValueError - p 是负数。

  • ValueError - xy 维度不同。

  • ValueError - xy 的维度既不是2,也不是3。

  • ValueError - 单批次训练下 xy 的shape不一样。

  • ValueError - xy 的列数不一样。

支持平台:

Ascend GPU CPU

样例:

>>> x = Tensor(np.array([[[1.0, 1.0], [2.0, 2.0]]]).astype(np.float32))
>>> y = Tensor(np.array([[[3.0, 3.0], [3.0, 3.0]]]).astype(np.float32))
>>> output = ops.cdist(x, y, 2.0)
>>> print(output)
[[[2.8284273 2.8284273]
  [1.4142137 1.4142137]]]