Ejemplo n.º 1
0
def main():
    '''Experiment on NN tos simulate y= f(x1, x2) = sin(2*pi*x1)*sin(2*pi*x2)'''
    '''Case 11: randomly generated inputs with random weights and biases
    Optimized to yield the best network performance
'''

    datafile = './data/perf/data.txt'
    testfile = './data/perf/test.txt'
    trainvcsv = './data/perf/training.csv'
    testcsv = './data/perf/testing.csv'
    imgfile = './data/perf/loss.png'
    wbfile = './data/perf/weights_biases.txt'

    dm.makeDir('./data/perf')

    dm.genRandData(datafile, 50)
    dm.genData(testfile, 10)

    perf_number = 0
    max_perf = 0

    while perf_number < 75:
        dataset = []
        dm.parseData(datafile, dataset)

        NN = NeuralNet(3, True)  # create NN with 3 hidden neurons

        NN.savewb('Weights and Biases before Training', wbfile)

        NN.train(dataset, imgfile, trainvcsv, 500)  # train the neural network

        NN.savewb('Weights and Biases after Training', wbfile)

        testset = []
        dm.parseData(testfile, testset)

        perf_number = NN.test(testset, testcsv)
        if perf_number > max_perf:
            max_perf = perf_number
        print(f'\n\nMax perf: {max_perf}\n\n')

        with open(wbfile, 'a+') as F:
            F.write(f'\n\nMax perf: {perf_number}\n\n')