在 Pytorch 中获取欧几里德和无限距离

Vit*_*ito 1 python distance pytorch

我正在尝试使用 torch.dist 在 Pytorch 中获取欧几里得距离,如下所示:

torch.dist(vector1, vector2, 1)
Run Code Online (Sandbox Code Playgroud)

如果我使用“1”作为第三个参数,我将得到曼哈顿距离,结果是正确的,但我试图获取欧几里德距离和无限距离,结果不正确。我在第三个参数上尝试了很多不同的数字,但无法获得所需的距离。

如何使用 Pytorch 获得欧几里德距离和无限距离?

Was*_*mad 5

您应该使用.norm()代替.dist().

vector1 = torch.FloatTensor([3, 4, 5])
vector2 = torch.FloatTensor([1, 1, 1])

dist = torch.norm(vector1 - vector2, 1)
print(dist) # tensor(9.)
dist = torch.norm(vector1 - vector2, 2)
print(dist) # tensor(5.3852)
dist = torch.norm(vector1 - vector2, float("inf"))
print(dist) # tensor(4.)

dist = torch.dist(vector1, vector2, 1)
print(dist) # tensor(9.)
dist = torch.dist(vector1, vector2, 2)
print(dist) # tensor(5.3852)
dist = torch.dist(vector1, vector2, float("inf"))
print(dist) # tensor(1.)
Run Code Online (Sandbox Code Playgroud)

正如我们所看到的,对于无限远的距离,.norm()返回正确的答案。