我試圖了解反向傳播在數學上是如何工作的,并希望在 python 中使用 numpy 實現它。我使用帶有一個隱藏層的前饋神經網絡進行計算,sigmoid 作為激活函數,均方誤差作為誤差函數。這是我計算結果的截圖,問題是有一堆矩陣,我不能把它們完全相乘,因為它們沒有相同的維度。(截圖中L是輸出層,L-1是隱藏層,L-2是輸入層,W是權重,E是誤差函數,小寫A是激活值)(代碼中第一層有28*28個節點,【因為我使用0-9位的MNIST數據庫作為訓練數據】,隱藏層15個節點,輸出層10個節點)。# ho stands for hidden_output# ih stands for input_hiddendef train(self, input_, target): self.input_ = input_ self.output = self.feedforward(self.input_) # Derivative of error with respect to weight between output layer and hidden layer delta_ho = (self.output - target) * sigmoid(np.dot(self.weights_ho, self.hidden), True)) * self.hidden # Derivative of error with respect to weight between input layer and hidden layer delta_ih = (self.output - target) * sigmoid(np.dot(self.weights_ho, self.hidden), True)) * self.weights_ho * sigmoid(np.dot(self.weights_ih, self.input_), True) * self.input_ # Adjust weights self.weights_ho -= delta_ho self.weights_ih -= delta_ih在delta_ho = ...線,矩陣的尺寸(10× - 10×)*(10×)*(1×15)讓我怎么計算呢?謝謝你的幫助!
添加回答
舉報
0/150
提交
取消