有一个随机初始化的 Torch Tensor的形状如下。
投入
tensor1 = torch.rand((4,2,3,100))
tensor2 = torch.rand((4,2,3,100))
tensor1
和tensor2
分别是具有24个100维向量的 Torch Tensor。
我想得到一个形状为torch.size([4,2,3])
的Tensor,通过获得两个Tensor具有相同索引的向量之间的欧几里得距离。
我使用dist = torch.nn.functional.pairwise_distance(tensor1, tensor2)
来获得我想要的结果。
然而,pairwise_distance
函数计算Tensor的第二维的欧几里得距离。所以dist
的形状是torch.size([4,3,100])
。
为了解决这些问题,我执行了几次转置。代码如下:
tensor1 = tensor1.transpose(1,3)
tensor2 = tensor2.transpose(1,3)
dist = torch.nn.functional.pairwise_distance(tensor1, tensor2)
dist = dist.transpose(1,2)
有没有更简单或更容易的方法来获得我想要的结果?
2条答案
按热度按时间zd287kbt1#
给你
基本上这就是欧几里得距离。
减去-> 2的幂->沿着你想消除的不幸的轴沿着->平方根
q1qsirdb2#
使用pytorch进行所有操作(可能会产生更快的解决方案):