Source code for ads.hpo.stopping_criterion

#!/usr/bin/env python
# -*- coding: utf-8 -*--

# Copyright (c) 2020, 2022 Oracle and/or its affiliates.
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/


[docs] class NTrials: """ Exit based on number of trials. Parameters ---------- n_trials: int Number of trials (sets of hyperparamters tested). If :obj:`None`, there is no limitation on the number of trials. Returns ------- :class:`NTrials` NTrials object """ def __init__(self, n_trials: int): self.n_trials = n_trials def __call__(self): return self.n_trials
[docs] class TimeBudget: """ Exit based on the number of seconds. Parameters ---------- seconds: float Time limit, in seconds. If :obj:`None` there is no time limit. Returns ------- :class:`TimeBudget` TimeBudget object """ def __init__(self, seconds: float): assert seconds > 0, "<code>time_budget</code> has to be greater than 0." self.seconds = seconds def __call__(self): return self.seconds
[docs] class ScoreValue: """ Exit if the score is greater than or equal to the threshold. Parameters ---------- score: float The threshold for exiting the tuning process. If a trial value is greater or equal to `score`, process exits. Returns ------- :class:`ScoreValue` ScoreValue object """ def __init__(self, score: float): self.score = score def __call__(self, study: "optuna.study.Study", trial: "optuna.trial.FrozenTrial"): if trial.value >= self.score: study.stop()