optuna.pruners.ThresholdPruner

class optuna.pruners.ThresholdPruner(lower=None, upper=None, n_warmup_steps=0, interval_steps=1)[源代码]

用于检测试验中异常指标的 Pruner。

如果指标超过上限阈值、低于下限阈值或达到 nan,则进行剪枝。

示例

from optuna import create_study
from optuna.pruners import ThresholdPruner
from optuna import TrialPruned


def objective_for_upper(trial):
    for step, y in enumerate(ys_for_upper):
        trial.report(y, step)

        if trial.should_prune():
            raise TrialPruned()
    return ys_for_upper[-1]


def objective_for_lower(trial):
    for step, y in enumerate(ys_for_lower):
        trial.report(y, step)

        if trial.should_prune():
            raise TrialPruned()
    return ys_for_lower[-1]


ys_for_upper = [0.0, 0.1, 0.2, 0.5, 1.2]
ys_for_lower = [100.0, 90.0, 0.1, 0.0, -1]

study = create_study(pruner=ThresholdPruner(upper=1.0))
study.optimize(objective_for_upper, n_trials=10)

study = create_study(pruner=ThresholdPruner(lower=0.0))
study.optimize(objective_for_lower, n_trials=10)
参数:
  • lower (float | None) – 确定 Pruner 是否进行剪枝的最小值。如果中间值小于 lower,则进行剪枝。

  • upper (float | None) – 确定 Pruner 是否进行剪枝的最大值。如果中间值大于 upper,则进行剪枝。

  • n_warmup_steps (int) – 如果步数小于给定的预热步数,则禁用剪枝。

  • interval_steps (int) – 剪枝检查之间步数的间隔,偏移预热步数。如果在剪枝检查时没有报告任何值,则该检查将被推迟,直到报告一个值。值必须至少为 1。

方法

prune(study, trial)

根据报告的值判断试验是否应被剪枝。

prune(study, trial)[源代码]

根据报告的值判断试验是否应被剪枝。

请注意,此方法不应由库用户调用。相反,optuna.trial.Trial.report()optuna.trial.Trial.should_prune() 提供了在目标函数中实现剪枝机制的用户界面。

参数:
  • study (Study) – 目标 study 的 study 对象。

  • trial (FrozenTrial) – 目标 trial 的 FrozenTrial 对象。修改此对象之前请复制一份。

返回:

一个布尔值,表示试验是否应被剪枝。

返回类型:

bool