[英]Python NumPy Array and Matrix Multiplication
我正在閱讀“制作自己的神經網絡”一書,並按照示例來實現我的第一個神經網絡。 我理解了基本概念,特別是這個方程,其中輸出是通過輸入和權重的矩陣點積來計算的:
X = W * I
其中 X 是應用 Sigmoid 之前的輸出,W 是鏈接權重,I 是輸入。
現在在書中,他們確實有一個函數,可以將這個輸入作為一個數組,然后將該數組轉換為二維數組。 我的理解是,X 的值是這樣計算的,基於:
W = [0.1, 0.2, 0.3
0.4, 0.5, 0.6
0.7, 0.8, 0.9]
I = [1
2
3]
因此,如果我現在為 [1,2,3] 之類的輸入傳入一個數組,為什么我需要執行以下操作才能將其轉換為本書中所做的二維數組:
inputs = numpy.array(inputs, ndmin=2).T
有任何想法嗎?
您在此處輸入的是一維列表(或一維數組):
I = [1, 2, 3]
這個一維數組背后的想法如下:如果這些數字表示花瓣的寬度(厘米)、長度和重量(以克為單位):您的花瓣將有1cm
的寬度、 2cm
的長度和一個重量3g
。
將輸入I
轉換為二維數組對於兩件事來說是必要的:
numpy.array(inputs)
將此列表轉換為 NumPy 數組將產生一個形狀為 (3,) 的數組,第二維未定義。 通過設置ndmin=2
,它強制維度為 (3, 1),這樣就不會產生任何與 NumPy 相關的問題,例如在使用矩陣乘法等時。 因此,當您執行inputs = numpy.array(inputs, ndmin=2).T
,您最終會得到:
array([[1], # width
[2], # length
[3]]) # weight
而不是:
array([1, 2, 3])
希望它使事情更清楚一些!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.