我試圖瞭解numpy在嘗試調用兩個行向量的點積時是如何工作的。在Python中計算兩個numpy行數組(向量)的點積給出了一個形狀向量
我有這樣的代碼:
X = np.array([[1,2,3]])
THETA = np.array([[1,2,3]])
print X.dot(THETA)
這給我的錯誤:
ValueError: shapes (1,3) and (1,3) not aligned: 3 (dim 1) != 1 (dim 0)
我認爲你可以採取兩種行向量的點積然而得到:
x1*theta1 + x2*theta2 + x3*theta3
而且這也會轉移到點積的兩列向量。
怪異的一部分是,我不得不採取第二矩陣的轉置,以實際使用的點積:
print X.dot(THETA.T)
array([[14]])
但是,我沒想到這會實際工作,以及爲什麼它將工作,而不是隻做點行操作。任何人都可以幫助我理解發生了什麼?線性代數中的某些規則是否早已忘記?
你爲什麼代表矢量作爲二維數組?矢量是1D。取下額外的一組括號。 – Will
@將它計算機器學習任務的感知器決策邊界的公式的一部分。我的猜測是我們必須有一個正確的形狀供以後計算。但是,我看到他使用代碼「X.dot(THETA.T)」來計算線性響應,並且我很難理解爲什麼他必須轉置它。 – Alex