Самодельная нейронная сеть не работает - PullRequest
0 голосов
/ 13 апреля 2020

Поэтому я попытался написать свою собственную нейронную сеть в Python (без использования каких-либо библиотек, кроме numpy и random для функции exp и random для функции обучения), я не могу понять, почему это не так учиться как следует ... Пожалуйста, помогите мне исправить это, чтобы оно работало. Я думаю, что проблема в функции обратного распространения / функции изменения веса, кто-нибудь видит что-то не так с расчетами?

def changeWeights(self):
    i = 0
    while i < self.layersAmount:
        j = 0
        while j < self.layers[i].amountOfNuerons:
            k = 0
            while k < len(self.layers[i].neurons[j].weights):
                weight = self.layers[i].neurons[j].weights[k]
                err = self.layers[i].neurons[j].error
                ans = self.layers[i].neurons[j].ans
                gradient = err * sigmoid_derivative(ans) * LEARNING_RATE
                self.layers[i].neurons[j].weights[k] += gradient * ans
                self.layers[i].neurons[j].bias += gradient
                k += 1
            j += 1
        i += 1

def backprop(self, errors):
    i = len(self.layers) - 1
    for j in range(self.outputs):   
        self.layers[i].neurons[j].error = errors[j]
    i -= 1
    while i > -1:
        k = 0
        while k < len(self.layers[i].neurons):
            sum = 0
            for j in range(len(self.layers[i + 1].neurons)):
                weight = self.layers[i + 1].neurons[j].weights[k]
                sum += weight * self.layers[i + 1].neurons[j].error
            self.layers[i].neurons[k].error = sum
            k += 1
        i -= 1
    self.changeWeights()
...