with open('seeddata.csv', newline='') as csvfile:
    rows = reader(csvfile, delimiter=' ')
    Data = [row[0].split(',') for row in rows]

NN = NeuralNetwork()
Network = NN.Initialize(Data)

for i in range(1, 10000):
    shuffle(Data)
    sum_error = 0
    for data in Data:
        NN.InitializeInputs(data, Network)
        NN.FowardPropagate(Network)
        expected = NN.Expected(data[-1])

        ####################################################################
        outputs = [node.Activation for node in Network[-1].Neurons]
        outputLayer = Network[-1].Neurons
        maxindex = reduce(
            lambda x, y: x
            if outputLayer[x].Activation > outputLayer[y].Activation else y,
            range(len(outputLayer)))
        if maxindex == NN.OutcomeToIndex[data[-1]]:
            sum_error += 1
        # sum_error += sum([(expected[i]-outputs[i])**2 for i in range(len(expected))])
        #############################################################################
        NN.BackwardPropagate(expected, Network)
        NN.Train(Network)

    print(sum_error / len(Data) * 100)