如何在PyTorch中计算两个向量的成对距离?


PyTorch中的向量是一维张量。为了计算两个向量之间的成对距离,我们可以使用**PairwiseDistance()**函数。它使用**p-范数**来计算成对距离。**PairwiseDistance**基本上是**torch.nn**模块提供的类。

  • 两个向量的尺寸必须相同。

  • 可以针对实值和复值输入计算成对距离。

  • 向量必须为**[N,D]**形状,其中**N**是批次维度,**D**是向量维度。

语法

torch.nn.PairwiseDistance(p=2)

默认的**p**设置为2。

步骤

您可以使用以下步骤来计算两个向量之间的成对距离

  • 导入所需的库。在以下所有示例中,所需的Python库是**torch**。确保您已经安装了它。

import torch
  • 定义两个向量或两批向量并打印它们。您可以定义实值或复值张量。

v1 = torch.randn(3,4)
v2 = torch.randn(3,4)
  • 创建一个**PairwiseDistance**实例来计算两个向量之间的成对距离。

pdist = torch.nn.PairwiseDistance(p=2)
  • 计算上面定义的向量之间的成对距离。

output = pdist (v1, v2)
  • 打印包含成对距离值的计算张量。

print("Pairwise Distance:", output)

示例1

在这个程序中,我们计算两个一维向量之间的成对距离。请注意,我们已经对向量进行了unsqueeze操作以使其成为批处理。

# python3 program to compute pairwise distance between
# the two 1D vectors/ tensors

import torch

# define first vector
v1 = torch.tensor([1.,2.,3.,4.]) # size is [4]

# unsqueeze v1 to make it of size [1,4]
v1 = torch.unsqueeze(v1,0)
print("Size of v1:",v1.size())

# define and unsqueeze second vector
v2 = torch.tensor([2.,3.,4.,5.])
v2 = torch.unsqueeze(v2, 0)
print("Size of v2:",v2.size())

print("Vector v1:
", v1) print("Vector v2:
", v2) # create an instance of the PairwiseDistance pdist = torch.nn.PairwiseDistance(p=2) # compute the distance output = pdist(v1, v2) # display the distance print("Pairwise Distance:
",output)

输出

Size of v1: torch.Size([1, 4])
Size of v2: torch.Size([1, 4])
Vector v1:
   tensor([[1., 2., 3., 4.]])
Vector v2:
   tensor([[2., 3., 4., 5.]])
Pairwise Distance:
   tensor([2.0000])

示例2

在这个程序中,我们计算两批一维向量之间的成对距离。

# python3 program to compute pairwise distance between
# a batch vectors/ tensors
import torch

# define first batch of 3 vectors
v1 = torch.rand(3,4)
print("Size of v1:",v1.size())

# define second batch of 3 vectors
v2 = torch.rand(3,4)
print("Size of v2:",v2.size())
print("Vector v1:
", v1) print("Vector v2:
", v2) # define function to compute pairwise distance pdist = torch.nn.PairwiseDistance(p=2) # compute the distance output = pdist(v1, v2) # display the distances print("Pairwise Distance:
",output)

输出

Size of v1: torch.Size([3, 4])
Size of v2: torch.Size([3, 4])
Vector v1:
   tensor([[0.7245, 0.7953, 0.6502, 0.9976],
      [0.1185, 0.6365, 0.3543, 0.3417],
      [0.7827, 0.3520, 0.5634, 0.0534]])
Vector v2:
   tensor([[0.6419, 0.2966, 0.4424, 0.6570],
      [0.5991, 0.4173, 0.5387, 0.1531],
      [0.8377, 0.6622, 0.8260, 0.8249]])
Pairwise Distance:
   tensor([0.6441, 0.5904, 0.8737])

更新于:2022年1月20日

2K+ 次浏览

开启您的职业生涯

通过完成课程获得认证

开始学习
广告