- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
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 the Cosine Similarity between two tensors in PyTorch?
To compute the cosine similarity between two tensors, we use the CosineSimilarity() function provided by the torch.nn module. It returns the cosine similarity value computed along dim.
dim is an optional parameter to this function along which cosine similarity is computed.
For 1D tensors, we can compute the cosine similarity along dim=0 only.
For 2D tensors, we can compute cosine similarity along dim=0 or 1.
The size of both tensors must be the same to compute the cosine similarity. Both tensors must be real-valued. Cosine similarity is often used to measure document similarity in text analysis.
Syntax
torch.nn.CosineSimilarity(dim=1)
The default dim is set to 1. But if you measure the cosine similarity between 1D tensors, then we set dim to 0.
Steps
Import the required library. In all the following examples, the required Python library is torch. Make sure you have already installed it.
import torch
Create two tensors and print them. Both tensors must be real-valued.
tensor1 = torch.randn(3,4) tensor2 = torch.randn(3,4)
Define a method to measure cosine similarity along dimension dim.
cos = torch.nn.CosineSimilarity(dim=0)
Compute the Cosine Similarity using the above defined method.
output = cos(tensor1, tensor2)
Print the computed tensor with cosine similarity values.
print("Cosine Similarity:",output)
Example 1
The following Python program computes the Cosine Similarity between two 1D tensors.
# Import the required library import torch # define two input tensors tensor1 = torch.tensor([0.1, 0.3, 2.3, 0.45]) tensor2 = torch.tensor([0.13, 0.23, 2.33, 0.45]) # print above defined two tensors print("Tensor 1:
", tensor1) print("Tensor 2:
", tensor2) # define a method to measure cosine similarity cos = torch.nn.CosineSimilarity(dim=0) output = cos(tensor1, tensor2) # display the output tensor print("Cosine Similarity:",output)
Output
Tensor 1: tensor([0.1000, 0.3000, 2.3000, 0.4500]) Tensor 2: tensor([0.1300, 0.2300, 2.3300, 0.4500]) Cosine Similarity: tensor(0.9995)
Example 2
In this Python program, we compute the Cosine Similarity between two 2D tensors along different dim.
# Import the required library import torch # define two input tensors tensor1 = torch.randn(3,4) tensor2 = torch.randn(3,4) # print above defined two tensors print("Tensor 1:
", tensor1) print("Tensor 2:
", tensor2) # define a method to measure cosine similarity in dim 0 cos0 = torch.nn.CosineSimilarity(dim=0) output0 = cos0(tensor1, tensor2) print("Cosine Similarity in dim 0:
",output0) # define a method to measure cosine similarity in dim 1 cos1 = torch.nn.CosineSimilarity(dim=1) output1 = cos1(tensor1, tensor2) print("Cosine Similarity in dim 1:
",output1)
Output
Tensor 1: tensor([[ 0.2714, 1.1430, 1.3997, 0.8788], [-2.2268, 1.9799, 1.5682, 0.5850], [ 1.2289, 0.5043, -0.1625, 1.1403]]) Tensor 2: tensor([[-0.3299, 0.6360, -0.2014, 0.5989], [-0.6679, 0.0793, -2.5842, -1.5123], [ 1.1110, -0.1212, 0.0324, 1.1277]]) Cosine Similarity in dim 0: tensor([ 0.8076, 0.5388, -0.7941, 0.3016]) Cosine Similarity in dim 1: tensor([ 0.4553, -0.3140, 0.9258])
- Related Articles
- How to compute the inverse cosine and inverse hyperbolic cosine in PyTorch?
- How to compute the cross entropy loss between input and target tensors in PyTorch?
- How to compare two tensors in PyTorch?
- PyTorch – How to compute element-wise logical XOR of tensors?
- How to compute pairwise distance between two vectors in PyTorch?
- How to join tensors in PyTorch?
- How to compute bitwise AND, OR and NOT of given input tensors in PyTorch?
- How to compute elementwise logical AND, OR and NOT of given input tensors in PyTorch?
- How to create tensors with gradients in PyTorch?
- How to perform element-wise addition on tensors in PyTorch?
- How to perform element-wise subtraction on tensors in PyTorch?
- How to perform element-wise multiplication on tensors in PyTorch?
- How to perform element-wise division on tensors in PyTorch?
- How to compute gradients in PyTorch?
- How to check similarity between two strings in MySQL?
