Я реализовал нейронную сеть с каждым слоем, являющимся классом, с функцией BP. Я бы хотел использовать QuickProp как более быстрый алгоритм поиска, чем обычный BP. Но что-то не так с моей реализацией QuickProp, потому что она не сходится. Ошибка остается такой, как если бы вы угадали результат. Кто-то видит ошибку?
# QuickPro initial values
self.weightsE_old = np.ones((inputSize, outputSize))-0.5
self.dw_old = np.random.uniform(-0.1, 0.1, size=(1, outputSize))
def BP(self, outputError, learningRate, learningAlgorithm):
inputError = np.dot(outputError, self.weights.T) # Error for the next layer
weightsError = np.dot(self.input.T, outputError) # dL/dw
# avoid division by zero
index = weightsError == self.weightsE_old
self.weightsE_old[index==True] = 0.1
dw = self.dw_old * (weightsError/(self.weightsE_old-weightsError))
self.dw_old = dw.copy()
self.weightsE_old = weightsError.copy()
# update parameters
self.weights = self.weights - learningRate * dw
self.bias =self.bias - learningRate * outputError
return inputError