pytorch - pytorch中的向量和矩阵行余弦相似度
问题描述
在 pytorch 中,我有多个(十万的规模)300 个暗向量(我认为我应该将它们上传到一个矩阵中),我想通过它们与另一个向量的余弦相似度对它们进行排序并提取前 1000 个向量。我想避免 for 循环,因为它很耗时。我一直在寻找一个有效的解决方案。
解决方案
您可以使用torch.nn.functional.cosine_similarity函数来计算余弦相似度。和torch.argsort提取前 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_1000]
,这将返回一个形状为 的矩阵(1000,300)
。
推荐阅读
- r - Draw facets of plots for each value type
- python - Python sympy substitute only works one time
- xaml - Improve Xamarin Forms performance with 20 Binding Labels and listview
- flutter - 在 TabBarView Flutter 上从第一个选项卡移动到最后一个选项卡时出现问题
- c# - Prevent third-party app crash from holding up program?
- angular - Angular 9: Can't get a blob response with HttpClient POST request
- duktape - 配置 Duktape 2.5.0 以在 MacOSX (Catalina) 下使用
- javascript - Google Analytics (GTAG) 和 JavaScript 问题
- assembly - “ld -Ttext 0x10000 --oformat=binary loader.o -o loader.bin”不起作用
- git - 我可以撤消 git reflog 吗?