mindspore.ops.cdist
- mindspore.ops.cdist(x1, x2, p=2.0)[源代码]
计算两个Tensor每对行向量之间的p-norm距离。
说明
Ascend上支持的输入数据类型为[float16, float32],CPU上支持的输入数据类型为[float16, float32],GPU上支持的输入数据类型为[float32, float64]。
- 参数:
x1 (Tensor) - 输入Tensor,shape为 \((B, P, M)\) , \(B\) 表示0或者正整数。 \(B\) 维度为0时该维度被忽略,shape为 \((P, M)\) 。
x2 (Tensor) - 输入Tensor,shape为 \((B, R, M)\) ,与 x1 的数据类型一致。
p (float,可选) - 计算向量对p-norm距离的P值,P >= 0。默认值:
2.0
。
- 返回:
Tensor,p-范数距离,数据类型与 x1 一致,shape为 \((B, P, R)\)。
- 异常:
TypeError - x1 或 x2 不是Tensor。
TypeError - x1 或 x2 的数据类型不符合上述“说明”中的要求。
TypeError - p 不是float32。
ValueError - p 是负数。
ValueError - x1 与 x2 维度不同。
ValueError - x1 与 x2 的维度既不是2,也不是3。
ValueError - x1 和 x2 的批次维无法广播。
ValueError - x1 和 x2 的列数不一样。
- 支持平台:
Ascend
GPU
CPU
样例:
>>> import numpy as np >>> from mindspore import Tensor, ops >>> 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]]]