pytorch计算两个特征的余弦相似度

首先,我们要记住一点,两个特征的余弦相似度计算出来的范围是**[-1,1]**
其实,对于两个特征,它们的余弦相似度就是两个特征在经过L2归一化之后的矩阵内积。
代码如下:

import torch
import torch.nn.functional as F
#假设feature1为N*C*W*H, feature2也为N*C*W*H(基本网络中的tensor都是这样)
feature1 = feature1.view(feature1.shape[0], -1)#将特征转换为N*(C*W*H),即两维
feature2 = feature2.view(feature2.shape[0], -1)
feature1 = F.normalize(feature1)  #F.normalize只能处理两维的数据,L2归一化
feature2 = F.normalize(feature2)
distance = feature1.mm(feature2.t())#计算余弦相似度
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章