コード例 #1
0
    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)
コード例 #2
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)
コード例 #3
0
    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)
コード例 #4
0
 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)
コード例 #5
0
    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))
コード例 #6
0
 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')
コード例 #7
0
    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))