def test_loss_is_equal_when_no_jumps(self): connections = ((-1, 2), (-2, 2), (2, 0), (2, 1)) genome = generate_genome_given_graph(graph=connections, connection_weights=(1.0, 2.0, 3.0, 0.5)) dataset = get_dataset(dataset=self.config.dataset, train_percentage=0.1, testing=False, noise=0.0, random_state=self.config.dataset_random_state) n_samples = 100 stg_trainer = StandardTrainer(dataset=dataset, n_samples=self.config.n_samples, n_output=genome.n_output, problem_type=self.config.problem_type, beta=self.config.beta, n_epochs=100, is_cuda=False) stg_trainer.train(genome) best_network = stg_trainer.get_best_network() new_genome = convert_stochastic_network_to_genome(network=best_network, original_genome=genome, fitness=-stg_trainer.best_loss_val, fix_std=genome.genome_config.fix_std) # evaluate genome loss = get_loss(problem_type=self.config.problem_type) loss_value = evaluate_genome(genome=new_genome, dataset=dataset, loss=loss, problem_type=self.config.problem_type, beta_type=self.config.beta_type, batch_size=self.config.batch_size, n_samples=n_samples, is_gpu=False, is_testing=False, return_all=False, is_pass=True) self.assertAlmostEqual(loss_value, -new_genome.fitness, places=0)
def test_genome_conversion_without_jumps(self): original_genome = generate_genome_given_graph(graph=((-1, 2), (-2, 2), (2, 0), (2, 1)), connection_weights=(1.0, 2.0, 3.0, 0.5)) network = ComplexStochasticNetwork(genome=original_genome) new_genome = convert_stochastic_network_to_genome(network=network, original_genome=original_genome) self.assertEqual(original_genome, new_genome)
def test_genome_conversion_fails_when_some_parameter_is_different(self): original_genome = generate_genome_given_graph(graph=((-1, 3), (-2, 3), (3, 2), (-1, 2), (2, 0), (2, 1), (-1, 1), (-2, 3)), connection_weights=(1.0, 2.0, 3.0, 0.5, 0.75, 0.8, 0.6, 0.9)) network = ComplexStochasticNetwork(genome=original_genome) network.layer_0.qw_mean[0, 1] = 0.33 self.assertRaises(Exception, convert_stochastic_network_to_genome, network, original_genome)
def test_non_existing_connections_are_updated(self): genome = generate_genome_given_graph(graph=((-1, 2), (-2, 2), (2, 0), (2, 1), (-1, 1)), connection_weights=(1.0, 2.0, 3.0, 0.5, 1.5)) dataset = get_dataset(dataset=self.config.dataset, train_percentage=0.1, testing=False, noise=0.0) stg_trainer = StandardTrainer(dataset=dataset, n_samples=self.config.n_samples, n_output=genome.n_output, problem_type=self.config.problem_type, beta=self.config.beta, n_epochs=self.n_epochs, is_cuda=False) stg_trainer.train(genome)
def test_genome_conversion_with_jumps_2(self): original_genome = generate_genome_given_graph(graph=((-1, 3), (-2, 3), (3, 2), (-1, 2), (2, 0), (2, 1), (-1, 1), (-2, 3)), connection_weights=(1.0, 2.0, 3.0, 0.5, 0.75, 0.8, 0.6, 0.9)) network = ComplexStochasticNetwork(genome=original_genome) new_genome = convert_stochastic_network_to_genome(network=network, original_genome=original_genome) new_network = ComplexStochasticNetwork(genome=new_genome) self.assertEqual(original_genome, new_genome) compare_networks(network, new_network) self.assertTrue(equal(network, new_network))
def test_network_scarce(self): n_epochs = 2 genome = generate_genome_given_graph(graph=((-2, 2), (-1, 1)), connection_weights=(1.0, 2.0)) dataset = get_dataset(dataset=self.config.dataset, train_percentage=0.5, testing=False, noise=0.0) stg_trainer = StandardTrainer(dataset=dataset, n_samples=self.config.n_samples, n_output=genome.n_output, problem_type=self.config.problem_type, beta=self.config.beta, n_epochs=n_epochs, is_cuda=False) stg_trainer.train(genome) best_network = stg_trainer.get_best_network() self.assertEqual(type(best_network), ComplexStochasticNetwork) self.assertNotEqual(str(stg_trainer.best_loss_val), 'nan') self.assertNotEqual(str(stg_trainer.final_loss), 'nan')
def test_non_existing_connections_are_updated_2(self): connections = ((-1, 1), (-2, 1)) genome = generate_genome_given_graph(graph=connections, connection_weights=(1.0, 2.0)) dataset = get_dataset(dataset=self.config.dataset, train_percentage=0.1, testing=False, noise=0.0) stg_trainer = StandardTrainer(dataset=dataset, n_samples=self.config.n_samples, n_output=genome.n_output, problem_type=self.config.problem_type, beta=self.config.beta, n_epochs=self.n_epochs, is_cuda=False) stg_trainer.train(genome) best_network = stg_trainer.get_best_network() new_genome = convert_stochastic_network_to_genome(network=best_network, original_genome=genome, fitness=-stg_trainer.best_loss_val, fix_std=genome.genome_config.fix_std) network_mutated = ComplexStochasticNetwork(genome=new_genome) self.assertEqual(type(new_genome), Genome) self.assertTrue(equal(best_network, network_mutated))