- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
How to compute pairwise distance between two vectors in PyTorch?
A vector in PyTorch is a 1D tensor. To compute pairwise distance between two vectors, we can use the PairwiseDistance() function. It uses p-norm to compute the pairwise distance. PairwiseDistance is basically a class provided by the torch.nn module.
The size of both the vectors must be same.
Pairwise distance can be computed for both real and complex-valued inputs.
The vectors must be in [N,D] shape, where N is the batch dimension and D is the vector dimension.
Syntax
torch.nn.PairwiseDistance(p=2)
The default p is set to 2.
Steps
You could use the following steps to compute the pairwise distance between two vectors
Import the required library. In all the following examples, the required Python library is torch. Make sure you have already installed it.
import torch
Define two vectors or two batches of vectors and print them. You can define real or complex-valued tensors.
v1 = torch.randn(3,4) v2 = torch.randn(3,4)
Create an instance of PairwiseDistance to compute the pairwise distance between the two vectors.
pdist = torch.nn.PairwiseDistance(p=2)
Compute the pairwise distance between the above-defined vectors.
output = pdist (v1, v2)
Print the computed tensor with the pairwise distance values.
print("Pairwise Distance:", output)
Example 1
In this program, we compute the pairwise distance between two 1D vectors. Notice that we have unsqueezed the vectors to make them batched.
# 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)
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])
Example 2
In this program, we compute the pairwise distance between two batches of 1D vectors.
# 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)
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])