#from pybrain.structure import FeedForwardNetwork #n = FeedForwardNetwork() #from pybrain.structure import LinearLayer, SigmoidLayer #inLayer = LinearLayer(2) #hiddenLayer = SigmoidLayer(3) #outLayer = LinearLayer(1) #n.addInputModule(inLayer) #n.addModule(hiddenLayer) #n.addOutputModule(outLayer) #from pybrain.structure import FullConnection #in_to_hidden = FullConnection(inLayer, hiddenLayer) #hidden_to_out = FullConnection(hiddenLayer, outLayer) #n.addConnection(in_to_hidden) #n.addConnection(hidden_to_out) #n.sortModules() #print n #from pybrain.supervised.trainers import BackpropTrainer #import numpy as np #create the network from pybrain.tools.shortcuts import buildNetwork net = buildNetwork(8,1,7) print('Network Structure\nInput: ') print(net['in']) print('Hidden layer 1: ') print(net['hidden0']) print('Output: ') print(net['out']) print("\nImporting training data...") #bring in data from training file i = 0 inp = [] #inputs x tar = [] #outputs ty f = open("regression.tra") for line in f.readlines(): #every other line in file is 8 input values or 7 output values if i%2 == 0: inp.append(list(map(float, line.split()))) else: tar.append(list(map(float, line.split()))) i=i+1 print("Training input rows: %d , Target rows: %d " % (len(inp), len(tar))) #print(i) #input("Press Enter to view input data...") #print('Input Values:') #print(imp) #input("Press Enter to view output data...") #print('Target Values:') #print(tar) #set input and target arrays in data set #raw_input("Press Enter to import training dataset into network...") from pybrain.datasets import SupervisedDataSet ds = SupervisedDataSet(8,7) for index, row in enumerate(inp): ds.addSample(inp[index],tar[index]) #print inp[index], tar[index] #train neural network print("\nTraining the neural network...") from pybrain.supervised.trainers import BackpropTrainer trainer = BackpropTrainer(net,ds) trainer.trainUntilConvergence(dataset = ds, maxEpochs=30, continueEpochs=10, verbose=True, validationProportion = .20) #for i in range(20): # print("Training Epoch: %d" % trainer.totalepochs) # print(trainer.testOnData()) # trainer.trainEpochs(1) print("\n") for mod in net.modules: for conn in net.connections[mod]: print conn for cc in range(len(conn.params)): print conn.whichBuffers(cc), conn.params[cc] print("\nTraining Epochs: %d" % trainer.totalepochs) #from pybrain.utilities import percentError print("\ntestOnData:") print(trainer.testOnData()) from pybrain.tools.validation import ModuleValidator, Validator meansq = ModuleValidator() print("MSE:", meansq.MSE(trainer.module,ds)) #print("\nTraining Percent Error: ") #print(percentError(trainer.testOnData(),ds)) raw_input("\nPress Enter to start testing...") print("Importing testing data...") #bring in data from test file i = 0 inp_tst = [] #inputs x tar_tst = [] #outputs ty f = open("regression.tst") for line in f.readlines(): #every other line in file is 8 input values or 7 output values if i%2 == 0: inp_tst.append(list(map(float, line.split()))) else: tar_tst.append(list(map(float, line.split()))) i=i+1 print("Test input rows: %d , Target rows: %d " % (len(inp_tst), len(tar_tst))) #test data set ds_tst = SupervisedDataSet(8,7) for index, row in enumerate(inp_tst): ds_tst.addSample(inp_tst[index],tar_tst[index]) #print inp_tst[index], tar_tst[index] #print("\nActivate on test dataset:") #print(net.activateOnDataset(ds_tst)) print("\ntestOnData ds_tst:") print(trainer.testOnData(dataset = ds_tst)) meansq = ModuleValidator() print("MSE:", meansq.MSE(trainer.module,ds_tst)) #print("\nTesting Percent Error: ") #print(percentError(trainer.testOnData(dataset = ds_tst),ds_tst)) p = net.activateOnDataset(ds_tst) print(p) #print('\nActivate:') #print(net.activate([1,2,3,4,5,6,7,8]))