исправление трассировки в программе обратного распространения ошибки для прогнозирования - PullRequest
0 голосов
/ 07 августа 2020

Я пробовал код алгоритма обратного распространения, который видел на inte rnet, но после запуска кода я обнаружил обратную трассировку, которую не понял. Можете ли вы, ребята, помочь мне улучшить и понять возникшую трассировку

А вот фрагмент моего кода, который часто вызывает ошибки:

from random import seed
from random import randrange
from random import random
from csv import reader
from math import exp

def evaluate_algorithm(dataset, algorithm, n_folds, *args):
    folds = cross_validation_split(dataset, n_folds)
    scores = list()
    for fold in folds:
        train_set = list(folds)
        train_set.remove(fold)
        train_set = sum(train_set, [])
        test_set = list()
        for row in fold:
            row_copy = list(row)
            test_set.append(row_copy)
            row_copy[-1] = None
        predicted = algorithm(train_set, test_set, *args)
        actual = [row[-1] for row in fold]
        accuracy = accuracy_metric(actual, predicted)
        scores.append(accuracy)
     return scores

def train_network(network, train, l_rate, n_epoch, n_outputs):
    for epoch in range(n_epoch):
        for row in train:
            outputs = forward_propagate(network, row)
            expected = [0 for i in range(n_outputs)]
            expected[row[-1]] = 1
            backward_propagate_error(network, expected)
            update_weights(network, row, l_rate)

def back_propagation(train, test, l_rate, n_epoch, n_hidden):
    n_inputs = len(train[0]) - 1
    n_outputs = len(set([row[-1] for row in train]))
    network = initialize_network(n_inputs, n_hidden, n_outputs)
    train_network(network, train, l_rate, n_epoch, n_outputs)
    predictions = list()
    for row in test:
        prediction = predict(network, row)
        predictions.append(prediction)
    return(predictions)



n_folds = 5
l_rate = 0.3
n_epoch = 500
n_hidden = 5
scores = evaluate_algorithm(dataset, back_propagation, n_folds, l_rate, n_epoch, n_hidden)
print('Scores: %s' % scores)

И ниже ошибка, которая появляется после запуска мой код:

Traceback (most recent call last):
- line 197, in <module>
scores = evaluate_algorithm(dataset, back_propagation, n_folds, l_rate, n_epoch, n_hidden)
- line 81, in evaluate_algorithm
predicted = algorithm(train_set, test_set, *args)
- line 173, in back_propagation
train_network(network, train, l_rate, n_epoch, n_outputs)
- line 150, in train_network
expected[row[-1]] = 1
IndexError: list assignment index out of range
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...