コード例 #1
0
    def __init__(self, hyperparameters, default_parameters=None):
        """

        :param hyperparameters: A dictionary of the form
        ```
        {
            'hp_1': [value1, value2, value3],
            'hp_2': [value1, value2, value3],
            ...
        }
        ```
        This format is like the param_grid in SciKit-Learn:
        http://scikit-learn.org/stable/modules/grid_search.html#exhaustive-grid-search
        :param default_parameters: Default key-value pairs to add to the
        dictionary.
        """
        self._hyperparameters = hyperparameters
        self._default_kwargs = default_parameters or {}
        named_hyperparameters = []
        for name, values in self._hyperparameters.items():
            named_hyperparameters.append([(name, v) for v in values])
        self._hyperparameters_dicts = [
            ppp.dot_map_dict_to_nested_dict(dict(tuple_list))
            for tuple_list in itertools.product(*named_hyperparameters)
        ]
コード例 #2
0
 def generate_random_hyperparameters(self):
     hyperparameters = {}
     for hp in self._hyperparameters:
         hyperparameters[hp.name] = hp.generate()
     hyperparameters = ppp.dot_map_dict_to_nested_dict(hyperparameters)
     return ppp.merge_recursive_dicts(
         hyperparameters,
         copy.deepcopy(self._default_kwargs),
         ignore_duplicate_keys_in_second_dict=True,
     )
コード例 #3
0
 def wrapped_function(params):
     start_time = time.time()
     if flatten_choice_dictionary:
         params = flatten_hyperopt_choice_dict(params)
     if dotmap_to_nested_dictionary:
         params = dot_map_dict_to_nested_dict(params)
     loss = function(
         merge_recursive_dicts(
             params,
             extra_function_kwargs,
             ignore_duplicate_keys_in_second_dict=True,
         ))
     if maximize:
         loss = -loss
     if np.isnan(loss):
         loss = max_magnitude
     return {
         'loss': loss,
         'status': STATUS_OK,
         'params': params,
         # -- store other results like this
         'eval_time': time.time() - start_time,
     }
コード例 #4
0
 def test_dotmap_dict_to_nested_dict(self):
     a = {'foo': 1, 'bar.baz': 3}
     result = ppp.dot_map_dict_to_nested_dict(a)
     expected = {'foo': 1, 'bar': {'baz': 3}}
     self.assertDictEqual(result, expected)