class NeuralNetCritic: def __init__(self): self.net = NeuralNet(nodes=config["nodes"]) def getTDError(self, state, newState, reinforcement): return self.net.criterion(state, newState, reinforcement) def updateEligibility(self, state, isCurrentState=False): return True def updateValueFunction(self, state, TDError): self.net.train(state, TDError)
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')
def trainTest(self, dataFilepath = None): nn = NeuralNet() nn.train() return