1. 程式人生 > >numpy.dot 多維點積

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矩陣最後兩個維度上;