我正在嘗試將數組和元組的不同部分組合起來以生成一系列產品。這裏是元組 '我':同時從numpy數組和元組中獲取點積
i=(2,5)
這裏是第一矩陣 'W':
w=[array([[-1.95446441, 1.53904854, -0.3461807 ],
[-0.19153855, -1.63290931, -1.76897156]]),
array([[ 0.25648535],
[ 0.20186475],
[ 0.78002102]])]
這裏是第二矩陣 'B':
[array([[-0.02676943],
[ 0.25294377],
[-0.43625132]]),
array([[ 0.07763943]])]
我想從這些數據結構的各個部分製作一系列名爲'a'的列表或矩陣列表。
這些產品的名單應該是等同於:
a[0][0] = (w[0][0][0]*i[0]) + (w[0][1][0]*i[1]) + b[0][0]
a[0][1] = (w[0][0][1]*i[0]) + (w[0][1][1]*i[1]) + b[0][1]
a[0][2] = (w[0][0][2]*i[0]) + (w[0][1][2]*i[1]) + b[0][2]
a[1][0] = (w[1][0] * a[0][0]) + (w[1][1] * a[0][1]) + (w[1][2] * a[0][2]) + b[1][0]
我想用這個作爲一個神經網絡的一部分,並寫了一個完美的作品以及使用迭代版本。不過,我對numpy很陌生,並希望構建一個基於矩陣的版本。我遇到的問題與理解numpy語法以執行上述操作有關。我試圖從一個在線教程適應這一點,但不知道從哪裏去。
for b, w in zip(b, w):
layer = sigmoid(np.dot(w, layer)+b.T)
a.append(layer)
這將引發和錯誤:
ValueError: shapes (2,3) and (1,3) not aligned: 3 (dim 1) != 1 (dim 0)
任何指針將是非常有益的?
錯誤非常明顯,矩陣尺寸不匹配。您正試圖計算2x3矩陣和1x3矩陣的乘積。我想你應該做'np.dot(w,np.tranpose(layer))' –
感謝您的評論,是的,我明白錯誤發生的原因,但它的語法而不是計算。如果你看看我上面詳述的內容,特別是最後一節'a [1] [0] =(w [1] [0] * a [0] [0])+(w [1] [1] * a [0] [1])+(w [1] [2] * a [0] [2])+ b [1] [0]'這是我想達到的目標,但是不知道如何獲得numpy以一種廣義的形式做到這一點。 – user3062260