# -*- coding: utf-8 -*-
from .tuner import ParallelizedTuner
[docs]class RandomSearch(ParallelizedTuner):
"""A basic Random Search tuner.
"""
[docs] def __init__(self, optimizer_class, hyperparam_names, distributions, ressources, runner):
"""
Args:
distributions (dict): Holds the distributions for each hyperparameter.\
Each distribution must implement an rvs() method to draw random variates.\
For instance, all scipy.stats.distribution distributions are applicable.
"""
super(RandomSearch, self).__init__(optimizer_class, hyperparam_names, ressources, runner)
self._distributions = distributions
self._search_name = 'random_search'
def _sample(self):
params = []
for i in range(self._ressources):
# sample parameters
sample = {}
for param_name, param_distr in self._distributions.items():
sample[param_name] = param_distr.rvs()
params.append(sample)
return params