[英]Understanding the rule of numpy.dot()
我試圖理解 numpy.dot() 的以下規則:
“當 a 是 ND 數組時,b 是 MD 數組(其中 M>=2)。點積定義為 a 的最后一個軸和 b 的倒數第二個軸的和積”
我想了解的是,具體示例的計算細節如何:
a = np.array([[[2,3,4],[5,6,7],[1,2,3]],[[1,3,4],[7,1,2],[6,2,1]]])
print(a)
[[[2 3 4]
[5 6 7]
[1 2 3]]
[[1 3 4]
[7 1 2]
[6 2 1]]]
b = np.array([[1 , 2, 3],[4, 5 ,6],[7, 8, 9]])
print (b)
b = [[1 2 3]
[4 5 6]
[7 8 9]]
np.dot(a,b) = [[[ 42 51 60]
[ 78 96 114]
[ 30 36 42]]
[[ 41 49 57]
[ 25 35 45]
[ 21 30 39]]]
我似乎無法弄清楚如何獲得第一個值。 我了解 numpy.dot() 定義的其他規則,但不了解最后一條。
來自numpy.dot
的文檔:
如果 a 是 ND 數組,b 是 MD 數組(其中 M>=2),則它是 a 的最后一個軸與 b 的倒數第二個軸的和積:
dot(a, b)[i,j,k,m] = sum(a[i,j,:] * b[k,:,m])
在您的示例中, a
形狀為 (2,3,3),軸為 (0,1,2)。 所以a
的最后一個軸是 2。b 的形狀是b
3,3),軸是 (0,1)。 倒數第二個軸的意思是倒數第二個軸。 由於 b 只有 2 個軸,倒數第二個軸為 0。
沿 a 的最后一個軸的數據:[2,3, 4] 沿 b 的倒數第二個軸的數據:[1, 4,7]
總和乘積 = sum([2*1,3*4,4*7])
= 42。
可以對 output 的所有值應用相同的邏輯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.