我想在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;
問題基本上是你,包括你的初始矩陣偏置:
[This](http://neuralnetworksanddeeplearning.com/)是一個不錯的和全面的介紹神經網絡,並在他們的方式實現神經網絡分類MNIST數據集在Python中。 – sietschie
我會爲你解決這個問題,但是你需要閱讀更多關於神經網絡的知識來了解它是如何工作的(不要忘記,編程是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