pytorch中的向量和矩阵行余弦相似性

pytorch中的向量和矩阵行余弦相似性,pytorch,cosine-similarity,Pytorch,Cosine Similarity,在pytorch中,我有多个(10万个)300维向量(我认为应该上传到矩阵中),我想根据它们与另一个向量的余弦相似性对它们进行排序,并提取前1000个向量。我想避免for循环,因为它很耗时。我正在寻找一个有效的解决方案。您可以使用该函数计算余弦相似性。并提取前1000名 以下是一个例子: x = torch.rand(10000,300) y = torch.rand(1,300) dist = F.cosine_similarity(x,y) index_sorted = torch.args

在pytorch中,我有多个(10万个)300维向量(我认为应该上传到矩阵中),我想根据它们与另一个向量的余弦相似性对它们进行排序,并提取前1000个向量。我想避免for循环,因为它很耗时。我正在寻找一个有效的解决方案。

您可以使用该函数计算余弦相似性。并提取前1000名

以下是一个例子:

x = torch.rand(10000,300)
y = torch.rand(1,300)
dist = F.cosine_similarity(x,y)
index_sorted = torch.argsort(dist)
top_1000 = index_sorted[:1000]
请注意
y
的形状,在调用相似性函数之前不要忘记重塑形状。还要注意,
argsort
只返回最近向量的索引。要访问这些向量本身,只需编写
x[top\u 1000]
,它将返回一个矩阵形状的
(1000300)