我有两个张量,我想在 Pytorch 中计算它们之间的余弦相似度:
a = torch.tensor([[0.,0.,0.,0.,0.]])
b = torch.tensor([[0.,0.,0.,0.,0.]])
我使用以下函数计算余弦相似度矩阵:
def calc_similarity_batch(a, b):
representations = torch.cat([a, b], dim=0)
return F.cosine_similarity(representations.unsqueeze(1), representations.unsqueeze(0), dim = 2)
令我惊讶的是,cosine_similarity 函数计算出的相似度矩阵是:
tensor([[0., 0.],
[0., 0.]])
虽然应该是:
tensor([[1., 1.],
[1., 1.]])
因为向量是相同的。有人可以解释一下我的代码有什么问题吗?