簡體   English   中英

了解 numpy.dot() 的規則

[英]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]]]
  • 如何獲得點積的第一個值“42”?
  • a 的最后一個軸是什么,b 的倒數第二個軸是什么?

我似乎無法弄清楚如何獲得第一個值。 我了解 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM