ValueError: 操作数形状无法广播 (224,224) (180,180)
我正在写一个程序,用来计算两个向量之间的余弦相似度。对于小的文本文件,这个程序运行得很好,但对于大的数据集,它就出错了。我看了很多关于广播的例子,但还是没能找到真正的问题所在。(在 p=x*y 这一行出错)
x = numpy.dot(u, u.T)
y = numpy.dot(v, v.T)
p = x * y
value = numpy.dot(u, v.T) / p
p=(x*y)
ValueError: operands could not be broadcast together with shapes (224,224) (180,180)
2 个回答
2
如果 x
和 y
的形状不一样,就会出现这种错误。它们的形状必须完全相同。请查看 这个 numpy
的广播规则。
2
你的变量 x 和变量 y 的“维度”不同。你应该确保它们的“维度”相似,比如 224,224 和 224,224,或者 180,180 和 180,180。
也就是说,用 numpy 进行“乘法”时,不能对两个“numpy 数组”进行维度不同的相乘。
举个例子:
x = np.linspace(1,10,num=224)
y = np.linspace(1,10,num=180)
p = x*y
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
p = x*y
ValueError: operands could not be broadcast together with shapes (224,) (180,)
但是:
x = np.linspace(1,10,num=224)
y = np.linspace(1,10,num=224)
p = x*y
这样就可以工作了。