Source code for autogluon.core.searcher.grid_searcher

from .searcher import BaseSearcher
from sklearn.model_selection import ParameterGrid

__all__ = ['GridSearcher']


[docs]class GridSearcher(BaseSearcher): """Grid Searcher that exhaustively tries all possible configurations. This Searcher can only be used for discrete search spaces of type :class:`autogluon.space.Categorical` Examples -------- >>> import autogluon.core as ag >>> @ag.args( ... x=ag.space.Categorical(0, 1, 2), ... y=ag.space.Categorical('a', 'b', 'c')) >>> def train_fn(args, reporter): ... pass >>> searcher = ag.searcher.GridSearcher(train_fn.cs) >>> searcher.get_config() Number of configurations for grid search is 9 {'x.choice': 2, 'y.choice': 2} """ def __init__(self, configspace, **kwargs): super().__init__( configspace, reward_attribute=kwargs.get('reward_attribute')) param_grid = {} hp_ordering = configspace.get_hyperparameter_names() for hp in hp_ordering: hp_obj = configspace.get_hyperparameter(hp) hp_type = str(type(hp_obj)).lower() assert 'categorical' in hp_type, \ 'Only Categorical is supported, but {} is {}'.format(hp, hp_type) param_grid[hp] = hp_obj.choices self._configs = list(ParameterGrid(param_grid)) print('Number of configurations for grid search is {}'.format(len(self._configs))) def __len__(self): return len(self._configs)
[docs] def get_config(self): """ Return new hyperparameter configuration to try next. """ return self._configs.pop()