После завершения этого курса я решил внедрить глубокую нейронную сеть с нуля, чтобы углубить свое понимание, но при обучении сети точность неуклонно увеличивается до тех пор, пока она не достигнет 35%, а затем начнет уменьшаться.Вот алгоритм backprop, который я реализовал.
Я установил скорость обучения на 0,001.Я тестировал до эпохи 500. Точность медленно увеличивается, что говорит о том, что backprop верен, но затем он останавливается и начинает уменьшаться.Я думаю, что в обратном проходе все еще может быть ошибка, но я не могу ее найти.Точность обучения каждой эпохи можно найти здесь => https://pastebin.com/bfQc6B2F
#FORWARD PROP
z2 = self.parameters['W1'].dot(inpt)+self.parameters['b1']
a2 = relu(z2)
z3 = self.parameters['W2'].dot(a2)+self.parameters['b2']
man_output = softmax(z3,self)
#BACKPROP
sigma3 = prediction-mappings
sigma2 = self.parameters['W2'].T.dot(sigma3)* reluGrad(a2)
dW2 = (1/m)*sigma3.dot(a2.T)
db2 = (1/m)*np.sum(sigma3,axis=1,keepdims=True)
dW1 = (1/m)*sigma2.dot(inpt.T)
db1 = (1/m)*np.sum(sigma2,axis=1,keepdims=True)
self.grads={'dW1':dW1,'db1':db1,'dW2':dW2,'db2':db2}
#UPDATE PARAMETERS
for l in range(int(len(self.parameters)/2)):
self.parameters['W'+str(l+1)] = self.parameters['W'+str(l+1)] -alpha*self.grads['dW'+str(l+1)]
self.parameters['b'+str(l+1)] = self.parameters['b'+str(l+1)] -alpha*self.grads['db'+str(l+1)]