[英]How does pytorch calculate matrix pairwise distance? Why isn't 'self' distance not zero?
If this is a naive question, please forgive me, my test code like this:如果这是一个幼稚的问题,请原谅我,我的测试代码是这样的:
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)
Result:结果:
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])
Questions are:问题是:
How does pytorch calculate pairwise distance? pytorch 如何计算成对距离? Is it to calculate row vectors distance?
是计算行向量距离吗?
Why isn't 'self' distance 0?为什么“自我”距离不是 0?
Update更新
After changing list_1 and list_2 to this:将 list_1 和 list_2 更改为以下内容后:
list_1 = [[1., 1.,1.,],[1., 1.,1.,]]
list_2 = [[1., 1.,1.,],[2., 1.,1.,]]
Result becomes:结果变成:
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])
Looking at the documentation of nn.PairWiseDistance
, pytorch expects two 2D tensors of N
vectors in D
dimensions, and computes the distances between the N
pairs.查看
nn.PairWiseDistance
的文档,pytorch 需要D
维中N
向量的两个 2D 张量,并计算N
对之间的距离。
Why "self" distance is not zero - probably because of floating point precision and because of eps = 1e-6
.为什么“自我”距离不为零 - 可能是因为浮点精度和因为
eps = 1e-6
。
根据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.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.