Пример #1
0
    def test_check_neighbouring_config_diamond_str(self):
        diamond = ConfigurationSpace()
        head = CategoricalHyperparameter('head', ['red', 'green'])
        left = CategoricalHyperparameter('left', ['red', 'green'])
        right = CategoricalHyperparameter('right',
                                          ['red', 'green', 'blue', 'yellow'])
        bottom = CategoricalHyperparameter('bottom', ['red', 'green'])
        diamond.add_hyperparameters([head, left, right, bottom])
        diamond.add_condition(EqualsCondition(left, head, 'red'))
        diamond.add_condition(EqualsCondition(right, head, 'red'))
        diamond.add_condition(
            AndConjunction(EqualsCondition(bottom, left, 'green'),
                           EqualsCondition(bottom, right, 'green')))

        config = Configuration(diamond, {
            'bottom': 'red',
            'head': 'red',
            'left': 'green',
            'right': 'green'
        })
        hp_name = "head"
        index = diamond.get_idx_by_hyperparameter_name(hp_name)
        neighbor_value = 1

        new_array = ConfigSpaceNNI.c_util.change_hp_value(
            diamond, config.get_array(), hp_name, neighbor_value, index)
        expected_array = np.array([1, np.nan, np.nan, np.nan])

        np.testing.assert_almost_equal(new_array, expected_array)
Пример #2
0
    def test_keys(self):
        # A regression test to make sure issue #49 does no longer pop up. By
        # iterating over the configuration in the for loop, it should not raise
        # a KeyError if the child hyperparameter is inactive.
        cs = ConfigurationSpace()
        shrinkage = CategoricalHyperparameter(
            "shrinkage",
            ["None", "auto", "manual"],
            default_value="None",
        )
        shrinkage_factor = UniformFloatHyperparameter(
            "shrinkage_factor",
            0.,
            1.,
            0.5,
        )
        cs.add_hyperparameters([shrinkage, shrinkage_factor])

        cs.add_condition(EqualsCondition(shrinkage_factor, shrinkage,
                                         "manual"))

        for i in range(10):
            config = cs.sample_configuration()
            d = {
                hp_name: config[hp_name]
                for hp_name in config if config[hp_name] is not None
            }
Пример #3
0
    def test_deactivate_inactive_hyperparameters(self):
        diamond = ConfigurationSpace()
        head = CategoricalHyperparameter('head', [0, 1])
        left = CategoricalHyperparameter('left', [0, 1])
        right = CategoricalHyperparameter('right', [0, 1])
        bottom = CategoricalHyperparameter('bottom', [0, 1])
        diamond.add_hyperparameters([head, left, right, bottom])
        diamond.add_condition(EqualsCondition(left, head, 0))
        diamond.add_condition(EqualsCondition(right, head, 0))
        diamond.add_condition(
            AndConjunction(EqualsCondition(bottom, left, 0),
                           EqualsCondition(bottom, right, 0)))

        c = deactivate_inactive_hyperparameters(
            {
                'head': 0,
                'left': 0,
                'right': 0,
                'bottom': 0
            }, diamond)
        diamond._check_configuration_rigorous(c)

        c = deactivate_inactive_hyperparameters(
            {
                'head': 1,
                'left': 0,
                'right': 0,
                'bottom': 0
            }, diamond)
        diamond._check_configuration_rigorous(c)

        c = deactivate_inactive_hyperparameters(
            {
                'head': 0,
                'left': 1,
                'right': 0,
                'bottom': 0
            }, diamond)
        diamond._check_configuration_rigorous(c)

        diamond = ConfigurationSpace()
        head = CategoricalHyperparameter('head', [0, 1])
        left = CategoricalHyperparameter('left', [0, 1])
        right = CategoricalHyperparameter('right', [0, 1])
        bottom = CategoricalHyperparameter('bottom', [0, 1])
        diamond.add_hyperparameters([head, left, right, bottom])
        diamond.add_condition(EqualsCondition(left, head, 0))
        diamond.add_condition(EqualsCondition(right, head, 0))
        diamond.add_condition(
            OrConjunction(EqualsCondition(bottom, left, 0),
                          EqualsCondition(bottom, right, 0)))

        c = deactivate_inactive_hyperparameters(
            {
                'head': 0,
                'left': 0,
                'right': 0,
                'bottom': 0
            }, diamond)
        diamond._check_configuration_rigorous(c)

        c = deactivate_inactive_hyperparameters(
            {
                'head': 1,
                'left': 1,
                'right': 0,
                'bottom': 0
            }, diamond)
        diamond._check_configuration_rigorous(c)

        c = deactivate_inactive_hyperparameters(
            {
                'head': 0,
                'left': 1,
                'right': 0,
                'bottom': 0
            }, diamond)
        diamond._check_configuration_rigorous(c)

        plain = ConfigurationSpace()
        a = UniformIntegerHyperparameter('a', 0, 10)
        b = UniformIntegerHyperparameter('b', 0, 10)
        plain.add_hyperparameters([a, b])
        c = deactivate_inactive_hyperparameters({'a': 5, 'b': 6}, plain)
        plain.check_configuration(c)