我想通过以下方式将5x1矩阵与1x1矩阵相乘。每次出现以下错误
ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0, with gufunc signature (n?,k),(k,m?)->(n?,m?)
这是我尝试的方式。请帮助我在此处调试特定实例
>>> m = np.ones(5)
>>> x = np.ones(1)
>>> m.shape
(5,)
>>> x.shape
(1,)
>>> m@x
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0, with gufunc signature (n?,k),(k,m?)->(n?,m?) (size 1 is different from 5)
>>> m.transpose()@x
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0, with gufunc signature (n?,k),(k,m?)->(n?,m?) (size 1 is different from 5)
答案 0 :(得分:0)
您的数组m
的形状不是5 x 1。像逐行一样。
左操作数的列数应与右操作数的行数匹配。因此,当您执行m @ x
时,根据矩阵乘法规则,它无效。
这样做吧:
>>> m.reshape(-1, 1) @ x
它使行向量m
用作形状为(5,1)的列向量。 x也有一行,因此是有效的矩阵乘法。
答案 1 :(得分:0)
您有2个1d数组,打印时的形状为(5,)和(1,)。这些不是IamInstanceProfile: !GetAtt ListS3BucketsInstanceProfile.Arn
或tokenize = udf(spacy_tokenizer, ArrayType(StringType()))
。
column vectors
文档对其如何处理一维数组的描述可能会有些混乱。我更喜欢row vectors
文档。它将两个一维数组视为矢量点/内积。无论哪种情况,两个数组都具有匹配的大小。
一些有效的形状组合:
matmul
对于2d(及更高版本)的数组,A的最后一个暗度必须与B的第二个匹配至最后一个。这是对行和列向下规则进行的经典手动扫描。