numpy.dot 多維點積
阿新 • • 發佈:2019-02-16
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矩陣最後兩個維度上;