2016-04-24 101 views
-1

我想在Python中爲MNIST數字識別實現一個隱藏層神經網絡。神經網絡設置

類似如下:

   h1    
x1       z1 
       h2 
x2       z2 
1    h3 

       1 

我使用大小的隱藏層200

的功能,爲的位數是784

類的數量爲10

每個標籤都被轉換成一個長度爲10的矢量,該矢量在真實類的位置有一個1,在其他位置有0。

輸入和隱含層之間,我將使用200 785矩陣V.

矩陣V:在I,J - 條目表示在輸入層連接的第j個單元的重量隱藏層中的第i個單元。 V的第i行表示輸入第i個隱藏單元的權重集合。

所述隱藏輸出層之間,我打算應用矩陣W,其是由10 201

矩陣W:在I,J - 條目代表連接的第j個單元中的權重隱藏層到輸出層中的第i個單元。 W的第i行是輸入第i個輸出單元的權重集合。

所以我從輸入矩陣開始,這是n 784.有人可以解釋做什麼?我需要把它乘以什麼,然後把結果乘以什麼/怎麼樣?我不確定如何將這些矩陣相乘。

(我們只是調用激活函數f()。)

我有點通過矩陣的尺寸和不知道迷惑何時/何/究竟如何使用V和W

def simulate(inputs): 
    currentActivatedValues = inputs 
    for i in range(len(self.weights)): 
     summedValues = _weights[i] * currentActivatedValues + _biases[i] 
     # Perform activation function with the summed values 
     for k in range(len(summedValues)): 
      summedValues[k] = tanh(summedValues[k]); 
     currentActivatedValues = summedValues 
    return currentActivatedValues; 

問題基本上是你,包括你的初始矩陣偏置:

+0

[This](http://neuralnetworksanddeeplearning.com/)是一個不錯的和全面的介紹神經網絡,並在他們的方式實現神經網絡分類MNIST數據集在Python中。 – sietschie

+1

我會爲你解決這個問題,但是你需要閱讀更多關於神經網絡的知識來了解它是如何工作的(不要忘記,編程是90%的學習/計劃和10%的編碼)。因此,輸入維度是n x 785,隱藏的昏暗是n x 200.權重(w)定義爲:w = transpose(input_dims)* hidden_​​dims。您應該使用轉置來使您的數據適合矩陣乘法:w = 785 x n * n x 200.這會給您一個尺寸爲785x200的w,這是所需的輸出。 (*表示矩陣乘法)。 – TasosGlrs

回答

0

這裏是前饋神經網絡的基本仿真步驟(從我的CPP神經網絡here移植)。你應該做的是之後處理它們。

看看這個paper關於前饋神經元網絡。它包括您需要設置基本配方的所有配方。