Pytorch求Consine Similarity

import numpy as np
from sklearn.metrics.pairwise import paired_distances
import torch.nn.functional as F
import torch
from sklearn.metrics.pairwise import cosine_similarity
from scipy import spatial
from numpy import dot
from numpy.linalg import norm

# x
x1 = np.array([[0.80752941, 0.53856979, 0.23620606, 0.19540647, 0.7920776, 0.00918439]])
x2 = np.array([[0.84784528, 0.69746047, 0.91245773, 0.27064697, 0.3165476, 0.85158265]])
# y
y1 = np.array([[0.21375023, 0.13551058, 0.93240456, 0.50134001, 0.8600716, 0.19956772]])
y2 = np.array([[0.60785337, 0.73592292, 0.57753456, 0.07512202, 0.82074906, 0.57231335]])


def consine(x, y, dim=0):
    return  F.cosine_similarity(x, y, dim=dim).mean()


# 余弦距离 = 1 - 余弦相似度
dist1_1 = 1 - paired_distances(x1, y1, metric='cosine')
print('cosine similarity1:', dist1_1)

dist1_2 = cosine_similarity(x1, y1)
print('cosine similarity1:', dist1_2)

dist1_3 = 1 - spatial.distance.cosine(x1, y1)
print('cosine similarity1:', dist1_3)

dist1_4 = consine(torch.from_numpy(x1), torch.from_numpy(y1), dim=1)
print('cosine similarity1:', dist1_4)

dist1_5 = dot(x1, y1.T)/(norm(x1)*norm(y1))
print('cosine similarity1:', dist1_5)

x3 = np.concatenate((x1, x2), axis=0)
y3 = np.concatenate((y1, y2), axis=0)

x3_ = torch.from_numpy(x3)
y3_ = torch.from_numpy(y3)

dist3_4 = torch.mm(x3_, y3_.T)/(torch.norm(x3_)*torch.norm(y3_))
print('cosine similarity3:', dist3_4)

dist3_5 = dot(x3, y3.T)/(norm(x3)*norm(y3))
print('cosine similarity3:', dist3_5)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值