如何比较pytorch中两个tensor的相似度
在PyTorch中,可以使用各种方法来比较两个张量的相似度,其中一些常见的方法如下:
- L1距离:计算两个张量的绝对值差的和,即 $dist = \sum_i |x_i - y_i|$。
import torch
a = torch.tensor([1, 2, 3])
b = torch.tensor([2, 3, 4])
dist = torch.abs(a-b).sum()
print(dist) # tensor(3)
- L2距离:计算两个张量的欧几里得距离,即 $dist = \sqrt{\sum_i (x_i - y_i)^2}$。
import torch
a = torch.tensor([1, 2, 3])
b = torch.tensor([2, 3, 4])
dist = torch.sqrt(torch.pow(a-b, 2).sum())
print(dist) # tensor(1.7321)
- 余弦相似度:计算两个张量的余弦相似度,即 $sim = \frac{x \cdot y}{|x| \cdot |y|}$。
import torch
a = torch.tensor([1, 2, 3])
b = torch.tensor([2, 3, 4])
sim = torch.dot(a, b) / (torch.norm(a) * torch.norm(b))
print(sim) # tensor(0.9922)
- Pearson相关系数:计算两个张量的Pearson相关系数,即 $r_{xy} = \frac{\sum_{i=1}^n (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum_{i=1}^n (x_i - \bar{x})^2} \sqrt{\sum_{i=1}^n (y_i - \bar{y})^2}}$。
import torch
a = torch.tensor([1, 2, 3])
b = torch.tensor([2, 3, 4])
a_mean = a.mean()
b_mean = b.mean()
numerator = ((a-a_mean)*(b-b_mean)).sum()
denominator = torch.sqrt(((a-a_mean)**2).sum()) * torch.sqrt(((b-b_mean)**2).sum())
pearson = numerator / denominator
print(pearson) # tensor(1.)
这些方法中的任何一个都可以用来比较两个张量的相似度,具体取决于您的需求和数据类型。
原文地址: https://www.cveoy.top/t/topic/qsv 著作权归作者所有。请勿转载和采集!