You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于PyTorch中沿dim=0计算余弦相似度的结果困惑

关于PyTorch余弦相似度dim参数的解释

你的理解偏差在于对dim参数的定义搞反了。F.cosine_similarity中的dim指定的是要计算相似度的向量所在的维度,而非分组维度。

你的例子拆解

你的张量a和b形状均为(2,4):

  • a的4个列向量依次是:[1,1]、[2,9]、[3,9]、[5,5]
  • b的4个列向量依次是:[7,10]、[8,-1]、[9,3]、[5,5]

当设置dim=0时,函数会沿着第0维(行维度),将两个张量对应位置的列向量配对,分别计算余弦相似度,最终得到4个结果,和你看到的输出完全匹配:

  • 列向量[1,1]与[7,10]的相似度:≈0.9848
  • 列向量[2,9]与[8,-1]的相似度:≈0.0942
  • 列向量[3,9]与[9,3]的相似度:=0.6000
  • 列向量[5,5]与[5,5]的相似度:=1.0000

实现你预期的计算逻辑

如果你想计算a的第一行[1,2,3,5]与b的第一行[7,8,9,5]的相似度,以及a的第二行[1,9,9,5]与b的第二行[10,-1,3,5]的相似度,需要将dim设为1(因为行向量是沿着第1维(列维度)的向量):

import torch
import torch.nn.functional as F

a = torch.as_tensor([[1,2, 3, 5], [1,9, 9, 5]]).float()
b = torch.as_tensor([[7, 8, 9, 5], [10, -1, 3, 5]]).float()
result = F.cosine_similarity(a, b, dim=1)
# 输出结果: tensor([0.9726, 0.5893])

内容的提问来源于stack exchange,提问作者Amir Jalilifard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 09:35:09