optuna.trial.FrozenTrial

class optuna.trial.FrozenTrial(number, state, value, datetime_start, datetime_complete, params, distributions, user_attrs, system_attrs, intermediate_values, trial_id, *, values=None)[source]

Trial 的状态和结果。

此类对象与 Trial 具有相同的方法,但与之不关联,也不引用 Study

因此,无法仅通过此对象对存储进行持久性更改,例如使用 set_user_attr()

它将建议存储在 params 中的参数值,并且不会从任何分布中抽样值。

它可以传递给目标函数(参见 optimize()),对于部署优化结果非常有用。

示例

使用优化后的 study 参数值重新评估目标函数。

import optuna


def objective(trial):
    x = trial.suggest_float("x", -1, 1)
    return x**2


study = optuna.create_study()
study.optimize(objective, n_trials=3)

assert objective(study.best_trial) == study.best_value

注意

尽管名称如此,实例是可变的。例如,set_user_attr() 将会原地更新对象的 user 属性。

示例

覆盖的属性。

import copy
import datetime

import optuna


def objective(trial):
    x = trial.suggest_float("x", -1, 1)

    # this user attribute always differs
    trial.set_user_attr("evaluation time", datetime.datetime.now())

    return x**2


study = optuna.create_study()
study.optimize(objective, n_trials=3)

best_trial = study.best_trial
best_trial_copy = copy.deepcopy(best_trial)

# re-evaluate
objective(best_trial)

# the user attribute is overwritten by re-evaluation
assert best_trial.user_attrs != best_trial_copy.user_attrs

注意

请参考 Trial 了解方法和属性的详细信息。

参数:
number

对于每个 StudyTrial 的唯一连续编号。请注意,此字段使用零基编号。

state

TrialStateTrial

value

Trial 的目标值。valuevalues 不能同时指定。

values

Trial 的目标值序列。如果问题是多目标优化,则长度大于 1。valuevalues 不能同时指定。

datetime_start

Trial 开始时的日期时间。

datetime_complete

Trial 完成时的日期时间。

params

包含建议参数的字典。

distributions

包含 params 分布的字典。

user_attrs

包含使用 optuna.trial.Trial.set_user_attr() 设置的 Trial 属性的字典。

system_attrs

包含使用 optuna.trial.Trial.set_system_attr() 设置的 Trial 属性的字典。

intermediate_values

使用 optuna.trial.Trial.report() 设置的中间目标值。

方法

report(value, step)

报告函数的接口。

set_system_attr(key, value)

set_user_attr(key, value)

should_prune()

建议是否应该修剪试运行。

suggest_categorical()

suggest_discrete_uniform(name, low, high, q)

suggest_float(name, low, high, *[, step, log])

suggest_int(name, low, high, *[, step, log])

suggest_loguniform(name, low, high)

suggest_uniform(name, low, high)

属性

datetime_start

distributions

duration

返回完成试运行所花费的时间。

last_step

返回试运行中 intermediate_values 的最大步长。

number

params

system_attrs

user_attrs

value

values

property duration: timedelta | None

返回完成试运行所花费的时间。

返回:

持续时间。

property last_step: int | None

返回试运行中 intermediate_values 的最大步长。

返回:

中间值的最大步长。

report(value, step)[source]

报告函数的接口。

由于 FrozenTrial 不会被修剪,此报告函数不执行任何操作。

另请参阅

请参阅 should_prune()

参数:
  • value (float) – 目标函数返回的值。

  • step (int) – 试运行的步长(例如,神经网络训练的 Epoch)。请注意,剪枝器假定 step 从零开始。例如,MedianPruner 简单地检查 step 是否小于 n_warmup_steps 作为热身机制。

返回类型:

None

set_system_attr(key, value)[source]

警告

自 v3.1.0 起已弃用。此功能将在未来移除。此功能的移除目前计划在 v5.0.0 进行,但此计划可能会更改。参见 https://github.com/optuna/optuna/releases/tag/v3.1.0

参数:
返回类型:

None

should_prune()[source]

建议是否应该修剪试运行。

无论采用何种剪枝算法,建议总是 False

注意

FrozenTrial 只抽样一个参数组合。

返回:

False.

返回类型:

bool

suggest_discrete_uniform(name, low, high, q)[source]

警告

自 v3.0.0 起已弃用。此功能将在未来移除。此功能的移除目前计划在 v6.0.0 进行,但此计划可能会更改。参见 https://github.com/optuna/optuna/releases/tag/v3.0.0

请改用 suggest_float(…, step=…)。

参数:
返回类型:

float

suggest_loguniform(name, low, high)[source]

警告

自 v3.0.0 起已弃用。此功能将在未来移除。此功能的移除目前计划在 v6.0.0 进行,但此计划可能会更改。参见 https://github.com/optuna/optuna/releases/tag/v3.0.0

请改用 suggest_float(…, log=True)。

参数:
返回类型:

float

suggest_uniform(name, low, high)[source]

警告

自 v3.0.0 起已弃用。此功能将在未来移除。此功能的移除目前计划在 v6.0.0 进行,但此计划可能会更改。参见 https://github.com/optuna/optuna/releases/tag/v3.0.0

请改用 suggest_float。

参数:
返回类型:

float