def teach(version = 2, verbose = False): completed = 1 if version == 1: NN1 = NN() inputFilePath = generateFilename(description='minmaxinputDataset') outputFilePath = generateFilename(description='minmaxoutputDataset') loadData = NN1.loadData(inputFilePath,outputFilePath) train = NN1.teachPyBrain(verbose=False) saveResults = NN1.saveResults() fileIn = generateFilename(description="networkResults") fileOut_x_t = generateFilename(description="NNoutput_x_t") fileOut_y_t = generateFilename(description="NNoutput_y_t") fileOut_z_t = generateFilename(description="NNoutput_z_t") dataset = Dataset() sepX = dataset.separate(filepathOut=fileOut_x_t,filepathIn=fileIn,columns=[0,3]) sepY = dataset.separate(filepathOut=fileOut_y_t,filepathIn=fileIn,columns=[1,3]) sepZ = dataset.separate(filepathOut=fileOut_z_t,filepathIn=fileIn,columns=[2,3]) errorFilepath = generateFilename(description="networkError") saveErrors = NN1.saveError(errorFilepath) #plotData(fileOut_x_t) #plotData(fileOut_y_t) #plotData(fileOut_z_t) completed = 0 if version == 2: NN1 = NN() #Load Dataset in Neural Network inputFilePath = generateFilename(description='normInputDataset') outputFilePath = generateFilename(description='normOutputDataset') loadData = NN1.loadData(inputFilePath,outputFilePath) #Teach using Pybrain epochs=5 hiddenLayers=4 teachNN = NN1.teachPyBrain(epochs=epochs,hiddenLayers=hiddenLayers,verbose=False) #Save Results (Save outputs for given inputs) saveResultsPath = generateFilename(description='resultsNN') saveResults = NN1.saveResults(saveResultsPath) #Separate Results sepResultsFilepathX = generateFilename(description='resultsNN_x_t') sepResultsFilepathY = generateFilename(description='resultsNN_y_t') sepResultsFilepathZ = generateFilename(description='resultsNN_z_t') columnsX_T = [0,3] columnsY_T = [1,3] columnsZ_T = [2,3] sepResultsX = Dataset().separate(sepResultsFilepathX,saveResultsPath,columnsX_T) sepResultsY = Dataset().separate(sepResultsFilepathY,saveResultsPath,columnsY_T) sepResultsZ = Dataset().separate(sepResultsFilepathZ,saveResultsPath,columnsZ_T) #Denormalize Results outputFilePath = generateFilename(description='outputDataset') minmaxValues = (-1.,1.) resultsData = Dataset() resultsData.dataset = NN1.results outputDataset = np.load(outputFilePath) resultsData.min_dataset = outputDataset.min(axis=0) resultsData.max_dataset = outputDataset.max(axis=0) resultsData.min = minmaxValues[0] resultsData.max = minmaxValues[1] denormResults = resultsData.denormalize() #Save Denormalized Results denormResultsPath = generateFilename(description='denormResultsNN') resultsData.saveToFile(denormResultsPath) #Separate Denormalized Results sepDenormResultsFilepathX = generateFilename(description='denormResultsNN_x_t') sepDenormResultsFilepathY = generateFilename(description='denormResultsNN_y_t') sepDenormResultsFilepathZ = generateFilename(description='denormResultsNN_z_t') columnsX_T = [0,3] columnsY_T = [1,3] columnsZ_T = [2,3] sepDenormResultsX = Dataset().separate(sepDenormResultsFilepathX,denormResultsPath,columnsX_T) sepDenormResultsY = Dataset().separate(sepDenormResultsFilepathY,denormResultsPath,columnsY_T) sepDenormResultsZ = Dataset().separate(sepDenormResultsFilepathZ,denormResultsPath,columnsZ_T) #Save Errors saveErrorsPath = generateFilename(description='errorsNN') saveErrors = NN1.saveError(saveErrorsPath) #Save Weights savedWeightsfilepath = generateFilename(description='weightsNN') savedWeights = NN1.getWeights() saveWeights = NN1.saveWeights() print savedWeights print for item in savedWeights: print item if loadData + \ teachNN + \ saveResults + \ sepResultsX + \ sepResultsY + \ sepResultsZ + \ denormResults + \ sepDenormResultsX + \ sepDenormResultsY + \ sepDenormResultsZ + \ saveErrors == 0: completed = 0 if version == 3: inputDataFilepath = generateFilename(description = "stations", extension = ".txt", dateToday = False) fp = open(inputDataFilepath) listOfSatellites = [] for i, line in enumerate(fp): if i%3 == 0: listOfSatellites.append(line.strip()) for satellites in listOfSatellites: print satellites NN1 = NN() #Load Dataset in Neural Network inputFilePath = generateFilename(description='normInputDataset%s'%satellites) outputFilePath = generateFilename(description='normOutputDataset%s'%satellites) loadData = NN1.loadData(inputFilePath,outputFilePath) #Teach using Pybrain epochs=5 hiddenLayers=4 teachNN = NN1.teachPyBrain(epochs=epochs,hiddenLayers=hiddenLayers,verbose=False) #Save Results (Save outputs for given inputs) saveResultsPath = generateFilename(description='resultsNN%s'%satellites) saveResults = NN1.saveResults(saveResultsPath) #Separate Results sepResultsFilepathX = generateFilename(description='resultsNN_x_t%s'%satellites) sepResultsFilepathY = generateFilename(description='resultsNN_y_t%s'%satellites) sepResultsFilepathZ = generateFilename(description='resultsNN_z_t%s'%satellites) columnsX_T = [0,3] columnsY_T = [1,3] columnsZ_T = [2,3] sepResultsX = Dataset().separate(sepResultsFilepathX,saveResultsPath,columnsX_T) sepResultsY = Dataset().separate(sepResultsFilepathY,saveResultsPath,columnsY_T) sepResultsZ = Dataset().separate(sepResultsFilepathZ,saveResultsPath,columnsZ_T) #Denormalize Results outputFilePath = generateFilename(description='outputDataset%s'%satellites) minmaxValues = (-1.,1.) resultsData = Dataset() resultsData.dataset = NN1.results outputDataset = np.load(outputFilePath) resultsData.min_dataset = outputDataset.min(axis=0) resultsData.max_dataset = outputDataset.max(axis=0) resultsData.min = minmaxValues[0] resultsData.max = minmaxValues[1] denormResults = resultsData.denormalize() #Save Denormalized Results denormResultsPath = generateFilename(description='denormResultsNN%s'%satellites) resultsData.saveToFile(denormResultsPath) #Separate Denormalized Results sepDenormResultsFilepathX = generateFilename(description='denormResultsNN_x_t%s'%satellites) sepDenormResultsFilepathY = generateFilename(description='denormResultsNN_y_t%s'%satellites) sepDenormResultsFilepathZ = generateFilename(description='denormResultsNN_z_t%s'%satellites) columnsX_T = [0,3] columnsY_T = [1,3] columnsZ_T = [2,3] sepDenormResultsX = Dataset().separate(sepDenormResultsFilepathX,denormResultsPath,columnsX_T) sepDenormResultsY = Dataset().separate(sepDenormResultsFilepathY,denormResultsPath,columnsY_T) sepDenormResultsZ = Dataset().separate(sepDenormResultsFilepathZ,denormResultsPath,columnsZ_T) #Save Errors saveErrorsPath = generateFilename(description='errorsNN%s'%satellites) saveErrors = NN1.saveError(saveErrorsPath) #Save Weights savedWeightsfilepath = generateFilename(description='weightsNN%s'%satellites) savedWeights = NN1.getWeights() saveWeights = NN1.saveWeights() if loadData + \ teachNN + \ saveResults + \ sepResultsX + \ sepResultsY + \ sepResultsZ + \ denormResults + \ sepDenormResultsX + \ sepDenormResultsY + \ sepDenormResultsZ + \ saveErrors == 0: completed = 0 pass if version == 4: listNumberHiddenLayers =[2,3,4,5] listNumberEpochs = [5,10,30,60] for hiddenLayers in listNumberHiddenLayers: for epochs in listNumberEpochs: print "layers %d , epochs %d" % (hiddenLayers,epochs) NN1 = NN() #Load Dataset in Neural Network inputFilePath = generateFilename(description='normInputDataset') outputFilePath = generateFilename(description='normOutputDataset') loadData = NN1.loadData(inputFilePath,outputFilePath) #Teach using Pybrain teachNN = NN1.teachPyBrain(epochs=epochs,hiddenLayers=hiddenLayers,verbose=False) #Save Results (Save outputs for given inputs) saveResultsPath = generateFilename(description='resultsNN_%d_h_%d_e_'%(hiddenLayers,epochs)) saveResults = NN1.saveResults(saveResultsPath) #Separate Results sepResultsFilepathX = generateFilename(description='resultsNN_x_t_%d_h_%d_e_'%(hiddenLayers,epochs)) sepResultsFilepathY = generateFilename(description='resultsNN_y_t_%d_h_%d_e_'%(hiddenLayers,epochs)) sepResultsFilepathZ = generateFilename(description='resultsNN_z_t_%d_h_%d_e_'%(hiddenLayers,epochs)) columnsX_T = [0,3] columnsY_T = [1,3] columnsZ_T = [2,3] sepResultsX = Dataset().separate(sepResultsFilepathX,saveResultsPath,columnsX_T) sepResultsY = Dataset().separate(sepResultsFilepathY,saveResultsPath,columnsY_T) sepResultsZ = Dataset().separate(sepResultsFilepathZ,saveResultsPath,columnsZ_T) #Denormalize Results outputFilePath = generateFilename(description='outputDataset') minmaxValues = (-1.,1.) resultsData = Dataset() resultsData.dataset = NN1.results outputDataset = np.load(outputFilePath) resultsData.min_dataset = outputDataset.min(axis=0) resultsData.max_dataset = outputDataset.max(axis=0) resultsData.min = minmaxValues[0] resultsData.max = minmaxValues[1] denormResults = resultsData.denormalize() #Save Denormalized Results denormResultsPath = generateFilename(description='denormResultsNN_%d_h_%d_e_'%(hiddenLayers,epochs)) resultsData.saveToFile(denormResultsPath) #Separate Denormalized Results sepDenormResultsFilepathX = generateFilename(description='denormResultsNN_x_t_%d_h_%d_e_'%(hiddenLayers,epochs)) sepDenormResultsFilepathY = generateFilename(description='denormResultsNN_y_t_%d_h_%d_e_'%(hiddenLayers,epochs)) sepDenormResultsFilepathZ = generateFilename(description='denormResultsNN_z_t_%d_h_%d_e_'%(hiddenLayers,epochs)) columnsX_T = [0,3] columnsY_T = [1,3] columnsZ_T = [2,3] sepDenormResultsX = Dataset().separate(sepDenormResultsFilepathX,denormResultsPath,columnsX_T) sepDenormResultsY = Dataset().separate(sepDenormResultsFilepathY,denormResultsPath,columnsY_T) sepDenormResultsZ = Dataset().separate(sepDenormResultsFilepathZ,denormResultsPath,columnsZ_T) #Save Errors saveErrorsPath = generateFilename(description='errorsNN_%d_h_%d_e_'%(hiddenLayers,epochs)) saveErrors = NN1.saveError(saveErrorsPath) #Save Weights savedWeightsfilepath = generateFilename(description='weightsNN_%d_h_%d_e_'%(hiddenLayers,epochs)) savedWeights = NN1.getWeights() saveWeights = NN1.saveWeights() return completed