def train(self, args): if(self.data.ds == None): print("Can't train without loaded data") return if(args != [] and len(args) >= 2): self.net.epochs = int(args[1]) if(self.net.trainingType == "gradient"): if(self.trainer == None): self.trainer, self.returnsNet = self.__getGradientTrainer(); self.__train(self.trainer.trainEpochs, self.returnsNet) elif(self.net.trainingType == "optimization"): if(self.trainer == None): self.trainer, self.returnsNet = self.__getOptimizationTrainer(); self.__train(self.trainer.learn, self.returnsNet) return elif(self.trainingType == "crossval"): if(self.trainer == None): self.trainer, self.returnsNet = self.__getGradientTrainer(); evaluation = ModuleValidator.classificationPerformance(self.trainer.module, self.data.ds) validator = CrossValidator(trainer=self.trainer, dataset=self.trainer.ds, n_folds=5, valfunc=evaluation, verbose=True, max_epochs=1) print(validator.validate()) else: raise Exception("Cannot create trainer, no network type specified" + self.trainingType)
hidden_layer_size=200 net = buildNetwork( t-1 , hidden_layer_size, 1 ,bias = True ) trainer = BackpropTrainer( module=net, dataset=ds1, momentum=0.1, verbose=True, weightdecay=0.01) for i in range(20): print("Training Epoch #"+str(i)) trainer.trainEpochs( 1 ) p = net.activateOnDataset(ds2) p = p.argmax(axis=1) # the highest output activation gives the class p = p.reshape(-1,-1) print p hitrate = ModuleValidator.classificationPerformance(module=net,dataset=ds1) print hitrate #trainer.trainUntilConvergence( verbose = True, validationProportion = 0.15, maxEpochs = 20) # for i in range(20): # trainer.trainEpochs(3) # trnresult = percentError(trainer.testOnClassData(),y_train) # tstresult = percentError(trainer.testOnClassData(dataset=ds2),y_test) # print "epoch: %4d" % trainer.totalepochs, \ # "train error: %5.2f%%" % trnresult, \ # "test error: %5.2f%%" % tstresult # out = net.activateOnDataset(ds1) # out = out.argmax(axis=1) # the highest output activation gives the class # #print out # figure(1)