operands could not be broadcast together with shapes (160000,4) (4,4)
作者:互联网
python日常错误:
错误1:
operands could not be broadcast together with shapes (160000,4) (4,4)
操作数不能与形状(160000,4)(4,4)一起广播
错误代码:
对,你没看错,仅仅就是这一行
分析:
这里的变量a,b,c,d不是一个数,而是一群数,也就是每一个都代表着一个矩阵,之所以不能直接矩阵相乘,是因为python的“*”,如果是矩阵相乘的话,必须是行列数一致,然后对应元素相乘
如果想实现矩阵乘法的话,需要用到numpy.dot()函数,numpy的点积函数
修改后:
仍然是错误的
错误2:
operands could not be broadcast together with shapes (160000,4) (4,4)
分析:
虽然错误一致,但是错误的原因不同,有时候错误发生的原因却是不一样的
这里已经用到点积了,去计算矩阵乘法,为什么还会出现错误呢?
因为c的shape是(160000,4) 而矩阵乘法得到的px是(4,4)的,与矩阵乘法一样,“/”依旧不能进行矩阵除法,也就是说(160000,4) 和(4,4)的矩阵不能直接相除
其实错误的原因在第一行,a矩阵是(4,1)的,b矩阵是(1,4)的,正确的方式应该是
把a,b交换位置,矩阵乘法后得到(1,1)的矩阵或者说一个数,此时便可以直接相除了
标签:broadcast,operands,错误,could,矩阵,shapes,160000,乘法 来源: https://www.cnblogs.com/zyssj/p/16695156.html