比较与torch.cdist的功能差异

查看源文件

torch.cdist

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

更多内容详见torch.cdist

mindspore.ops.cdist

mindspore.ops.cdist(x1, x2, p=2.0)

更多内容详见mindspore.ops.cdist

差异对比

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

MindSpore:MindSpore此API实现功能与PyTorch基本一致,精度稍有差异。

分类

子类

PyTorch

MindSpore

差异

参数

参数1

x1

x1

-

参数2

x2

x2

-

参数3

p

p

-

参数4

compute_mode

-

torch中指定是否用矩阵乘法计算欧几里得距离,MindSpore中没有该参数

代码示例1

# PyTorch
import torch
import numpy as np

x =  torch.tensor(np.array([[1.0, 1.0], [2.0, 2.0]]).astype(np.float32))
y =  torch.tensor(np.array([[3.0, 3.0], [3.0, 3.0]]).astype(np.float32))
output = torch.cdist(x, y, 2.0)
print(output)
# tensor([[2.8284, 2.8284],
#         [1.4142, 1.4142]])

# MindSpore
import mindspore.numpy as np
from mindspore import Tensor
from mindspore import 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.828427  2.828427 ]
#  [1.4142135 1.4142135]]