def train_and_score(self, genome): """ Train and score a single individual. Score (fitness) is equal to a model's accuracy on test data predictions. """ trainer = Trainer(CNNModel.buildForEvolution(genome), self.config, self.data) trainer.train() # train individual using training data score = trainer.model.evaluate( self.data['testX'], self.data['testY'], verbose=0) # score individual using test data logging.info("Score : " + str(score[1])) # 1=accuracy, 0=loss. genome.fitness = score[1] # set the individual's fitness variable return score
if config['evolvingMode']: resultsDir = '' if config['intelligentSurvival']: resultsDir = 'results/evolution-intelligent-survival/' else: resultsDir = 'results/evolution-plain/' evolution = Evolution(config, data) evolution.initialise_population() for gen in range(numGenerations): evolution.evolvePopulation(gen) best_evolved_genome = evolution.hall_of_fame.getSolution(0) trainer = Trainer(CNNModel.buildForEvolution(best_evolved_genome), config, data) generate_model_summary(trainer.model) training_history = trainer.train() generate_classification_report(trainer.model, data) generate_training_stats_plot(config, training_history, resultsDir) save_model(trainer.model, resultsDir) score = trainer.model.evaluate(data['trainX'], data['trainY'], verbose=0) print("Score: " + str(score[1])) else: resultsDir = 'results/no-evolution/' trainer = Trainer( CNNModel.buildNoEvolution(), config, data) # initialise trainer with a newly initialised model generate_model_summary(trainer.model) # summary of the model structure training_history = trainer.train(