2017-06-29 39 views
2

我是一個非常非常(初學者)的人工神經網絡,並閱讀this tutorial。作者在下面的OCR示例中解釋了ANN。使用神經網絡進行數字識別的具體示例

有一個8x8網格與相等的單元格的二進制圖像(單元格總是相同的大小)。每個數字都是使用網格的一些單元格形成的。每張圖片都有數字0-9之一。

此外,假設所有訓練的數字也具有相等的8×8網格(例如訓練數字的向量4 =識別數字的向量4)。

例如,這是數字4的圖像:
enter image description here

所以他說,我們需要64個輸入(對每個網格單元一個輸入)。另外我們需要10個輸出節點(因爲我們有10個數字)。假設有一層隱藏節點。但我無法理解所有這些如何發揮作用。

誰能說出我們需要多少個隱藏節點以及這些隱藏節點必須做些什麼?

P.S.我們不需要在這裏完成所有幫助OCR處理 - 預處理,分割,演示。我們已經有向量的長度爲64的特徵。

回答

0

我們可以有任意數量的隱藏神經元。權重是乘以輸入向量的矩陣,所以圖層的輸出可以是任意大小。在你的例子中,權重矩陣將具有以下大小。注意:我排除了非線性,例如sigmoid,tanh或relu,因爲它們按元素操作並且不改變形狀。

output = output_weights * hidden_weights * input 
10 x 1 10 x num_hid num_hid x 64  64 x 1 

隱藏的神經元實際上做了什麼更微妙。在這個應用程序中,您試圖找到一個決策邊界,將「看起來像4的64像素圖像」與「看起來像3像素的64像素圖像」等空間分開。單層神經網絡(aka一個感知器)只能計算一個線性決策邊界。更深層次的神經網絡使得它可以更靈活地模擬更復雜的決策邊界。

爲了更好的直覺,嘗試玩Tensorflow web demo。您可以改變這些參數並查看添加更多圖層是如何增加更多表現力的,以及如何添加更多神經元來更改精度。