optuna.pruners.ThresholdPruner

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

用于检测试验的离群指标的剪枝器。

如果指标超过上限阈值、低于下限阈值或达到 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) – 决定是否进行剪枝的最小值。如果中间值小于 lower,则进行剪枝。

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

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

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

方法

prune(study, trial)

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

prune(study, trial)[source]

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

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

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

  • trial (FrozenTrial) – 目标试验的 FrozenTrial 对象。修改此对象前请创建副本。

返回:

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

返回类型:

bool