numpy.dot 多维点积

numpy中的*与dot不同,*表示对应元素的乘法操作,dot 点积、内积,二维情况就是普通的矩阵乘法;


多维情况两个例子:

a=np.random.random((2,3,4))

b=np.random.random((2,4,5))

np.dot(a,b).shape

#(2, 3, 2, 5)

------ ------ ----- ------- ---

a=np.ones((1,3,5))

b=np.ones((5,6))*3

c=a.dot(b)

c.shape

#(1, 3, 6)

------ ----- -------- --------

a=np.ones((1,3,4,5))
b=np.ones((5,6))*3
c=a.dot(b)

c.shape

#(1, 3, 4, 6)

--- --- --- --- --



a=np.ones((1,3,4,5))
b=np.ones((2,5,4))*3
c=a.dot(b)

c.shape

Out[112]:(1, 3, 4, 2, 4)

--- --- --- ---

解释:

只需a矩阵的最后一维dim等于b矩阵倒数第二维dim即可,对应二维情况就是第一个的列数等于第二个矩阵行数;

也就是说点积发生在a,b矩阵最后两个维度上;


你可能感兴趣的:(numpy.dot 多维点积)