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)
Beispiel #2
0
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)