5

如果这是一个幼稚的问题,请原谅我,我的测试代码是这样的:

import torch
from torch.nn.modules.distance import PairwiseDistance

list_1 = [[1., 1.,],[1., 1.]]
list_2 = [[1., 1.,],[2., 1.]]

mtrxA=torch.tensor(list_1)
mtrxB=torch.tensor(list_2)

print "A-B distance     :",PairwiseDistance(2).forward(mtrxA, mtrxB)
print "A 'self' distance:",PairwiseDistance(2).forward(mtrxA, mtrxA)
print "B 'self' distance:",PairwiseDistance(2).forward(mtrxB, mtrxB)

结果:

A-B distance     : tensor([1.4142e-06, 1.0000e+00])
A 'self' distance: tensor([1.4142e-06, 1.4142e-06])
B 'self' distance: tensor([1.4142e-06, 1.4142e-06])

问题是:

  1. pytorch如何计算成对距离?是计算行向量距离吗?

  2. 为什么'self'距离不是0?


更新

将 list_1 和 list_2 更改为此后:

list_1 = [[1., 1.,1.,],[1., 1.,1.,]]
list_2 = [[1., 1.,1.,],[2., 1.,1.,]]

结果变为:

A-B distance     : tensor([1.7321e-06, 1.0000e+00])
A 'self' distance: tensor([1.7321e-06, 1.7321e-06])
B 'self' distance: tensor([1.7321e-06, 1.7321e-06])
4

2 回答 2

5

查看 的文档nn.PairWiseDistance,pytorch 需要两个二维N向量张量D,并计算对之间的距离N

为什么“自我”距离不为零 - 可能是因为浮点精度eps = 1e-6.

于 2018-12-04T07:37:44.127 回答
0

根据https://github.com/pytorch/pytorch/blob/master/torch/nn/functional.py

Computes the p-norm distance between every pair of row vectors in the input.
于 2018-12-04T11:08:43.563 回答