【发布时间】:2021-09-14 03:05:39
【问题描述】:
有一个随机初始化的火炬张量,形状如下。
输入
tensor1 = torch.rand((4,2,3,100))
tensor2 = torch.rand((4,2,3,100))
tensor1 和 tensor2 分别是具有 24 个 100 维向量的火炬张量。
我想通过获取两个张量的相同索引的向量之间的欧几里德距离来得到一个形状为torch.size([4,2,3])的张量。
我使用dist = torch.nn.functional.pairwise_distance(tensor1, tensor2) 得到了我想要的结果。
但是,pairwise_distance 函数计算张量第二维的欧几里得距离。所以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)
有没有更简单或更容易的方法来获得我想要的结果?
【问题讨论】: