该
@运营商称阵列的
__matmul__方法,而不是
dot。此方法在API中也作为函数存在
np.matmul。
>>> a = np.random.rand(8,13,13)>>> b = np.random.rand(8,13,13)>>> np.matmul(a, b).shape(8, 13, 13)
从文档中:
matmul区别于dot两个重要方面。
- 标量不能相乘。
- 将矩阵堆栈一起广播,就好像矩阵是元素一样。
最后一点很明确,当传递3D(或更高维)数组时,
dot和
matmul方法的行为会有所不同。从文档中引用更多内容:
对于
matmul:
如果任一自变量的值为ND,N> 2,则将其视为驻留在最后两个索引中的矩阵的堆栈,并进行相应广播。
对于
np.dot:
对于2-D数组,它等效于矩阵乘法,对于1-D数组,其等效于向量的内积(无复共轭)。 对于N维,它是a的最后一个轴和b的倒数第二个轴的和积
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)