matchzoo.auto.tuner.tune
¶
Module Contents¶
-
matchzoo.auto.tuner.tune.
tune
(params:'mz.ParamTable', optimizer:str='adam', trainloader:mz.dataloader.DataLoader=None, validloader:mz.dataloader.DataLoader=None, embedding:np.ndarray=None, fit_kwargs:dict=None, metric:typing.Union[str, BaseMetric]=None, mode:str='maximize', num_runs:int=10, verbose=1)¶ Tune model hyper-parameters.
A simple shorthand for using
matchzoo.auto.Tuner
.model.params.hyper_space reprensents the model’s hyper-parameters search space, which is the cross-product of individual hyper parameter’s hyper space. When a Tuner builds a model, for each hyper parameter in model.params, if the hyper-parameter has a hyper-space, then a sample will be taken in the space. However, if the hyper-parameter does not have a hyper-space, then the default value of the hyper-parameter will be used.
See tutorials/model_tuning.ipynb for a detailed walkthrough on usage.
Parameters: - params – A completed parameter table to tune. Usually model.params of the desired model to tune. params.completed() should be True.
- optimizer – Str or Optimizer class. Optimizer for optimizing model.
- trainloader – Training data to use. Should be a DataLoader.
- validloader – Testing data to use. Should be a DataLoader.
- embedding – Embedding used by model.
- fit_kwargs – Extra keyword arguments to pass to fit. (default: dict(epochs=10, verbose=0))
- metric – Metric to tune upon. Must be one of the metrics in model.params[‘task’].metrics. (default: the first metric in params.[‘task’].metrics.
- mode – Either maximize the metric or minimize the metric. (default: ‘maximize’)
- num_runs – Number of runs. Each run takes a sample in params.hyper_space and build a model based on the sample. (default: 10)
- callbacks – A list of callbacks to handle. Handled sequentially at every callback point.
- verbose – Verbosity. (default: 1)
Example
>>> import matchzoo as mz >>> import numpy as np >>> train = mz.datasets.toy.load_data('train') >>> valid = mz.datasets.toy.load_data('dev') >>> prpr = mz.models.DenseBaseline.get_default_preprocessor() >>> train = prpr.fit_transform(train, verbose=0) >>> valid = prpr.transform(valid, verbose=0) >>> trainset = mz.dataloader.Dataset(train) >>> validset = mz.dataloader.Dataset(valid) >>> padding = mz.models.DenseBaseline.get_default_padding_callback() >>> trainloader = mz.dataloader.DataLoader(trainset, callback=padding) >>> validloader = mz.dataloader.DataLoader(validset, callback=padding) >>> model = mz.models.DenseBaseline() >>> model.params['task'] = mz.tasks.Ranking() >>> optimizer = 'adam' >>> embedding = np.random.uniform(-0.2, 0.2, ... (prpr.context['vocab_size'], 100)) >>> tuner = mz.auto.Tuner( ... params=model.params, ... optimizer=optimizer, ... trainloader=trainloader, ... validloader=validloader, ... embedding=embedding, ... num_runs=1, ... verbose=0 ... ) >>> results = tuner.tune() >>> sorted(results['best'].keys()) ['#', 'params', 'sample', 'score']