我是神經網絡的新手。我試圖編寫簡單的4-0-2 MLP並在實踐中學習反向傳播算法。但是我的反向傳播總是偏離,輸出總是[1,1]。我搜索了可能的原因,但是既沒有將學習率設置爲很小的數字(0.001),也沒有改變三角形權重的符號可以解決問題。反向傳播算法運行不正常
代碼反向傳播算法:
def backward(self,trainingSamples):
for i in range(len(trainingSamples)):
curr_sample=trainingSamples[i]
self.input=curr_sample[0]
self.forward()
print("output is "+str(self.output))
curr_des_out=curr_sample[1]
for i in range(len(self.outputs)):
error=curr_des_out[i]-self.outputs[i].output
der_act=self.outputs[i].activate(deriv=True)
local_gradient=der_act*error
for j in range(len(self.input)):
self.weights[j][i]-=self.learning_rate*local_gradient*self.input[j]
和trainingSamples
是陣列的元組的元組:(([1,1,1,1],[1,0]), ([0,0,0,0],[0,1]),([1,0,0,0],[0,1]), ([1,0,1,0],[1,0]))
這裏是前向的通行碼:
def forward(self):
for i in range(len(self.outputs)):
for j in range(len(self.input)):
self.outputs[i].input+=self.input[j]*self.weights[j][i]
self.outputs[i].activate()
self.output[i]=self.outputs[i].output
return self.output
你能告訴你如何計算輸出嗎?也許前鋒(也是)有問題? (我不想冒犯你,但我們可以排除的越多,我認爲就越好)。 –
@david_l:也許你更好[編輯](http://stackoverflow.com/posts/41837181/edit)它在你的問題。 –
@ WillemVanOnsem,done –