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)[源代码]

一个 Trial 的状态和结果。

此类对象具有与 Trial 相同的接口,但它不与任何 Study 关联,也没有任何指向 Study 的引用。

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

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

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

示例

使用优化研究中的参数值重新评估目标函数。

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() 将原地更新对象的用户属性。

示例

被覆盖的属性。

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

目标函数的返回值。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()

建议是否应该修剪此 trial。

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

返回完成 trial 所花费的经过时间。

last_step

返回 trial 中 intermediate_values 的最大步长。

编号

参数

系统属性

user_attrs

value

values

property duration: timedelta | None

返回完成 trial 所花费的经过时间。

返回:

持续时间。

property last_step: int | None

返回 trial 中 intermediate_values 的最大步长。

返回:

中间值的最大步长。

report(value, step)[源代码]

报告函数的接口。

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

另请参阅

请参阅 should_prune()

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

  • step (int) – trial 的步长(例如,神经网络训练的 epoch)。请注意,修剪器假定 step 从零开始。例如,MedianPruner 仅检查 step 是否小于 n_warmup_steps 以实现预热机制。

返回类型:

set_system_attr(key, value)[源代码]

警告

已弃用 (v3.1.0)。此功能将在未来移除。此功能移除的计划时间为 v5.0.0,但此计划可能会有变动。请参阅 https://github.com/optuna/optuna/releases/tag/v3.1.0

参数:
返回类型:

should_prune()[源代码]

建议是否应该修剪此 trial。

无论采用何种修剪算法,建议值始终为 False

注意

FrozenTrial 只采样一种参数组合。

返回:

False.

返回类型:

bool

suggest_discrete_uniform(name, low, high, q)[源代码]

警告

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)[源代码]

警告

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)[源代码]

警告

v3.0.0 中已弃用。此功能将在未来版本中移除。此功能当前的移除计划是 v6.0.0,但此计划可能会更改。请参阅 https://github.com/optuna/optuna/releases/tag/v3.0.0

请改用 suggest_float。

参数:
返回类型:

float