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() 参照)、 最適化結果のデプロイに便利です。

使用例

最適化済みのパラメータ値で目的関数を再評価する例。

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

Note

名前とは異なり、インスタンスは変更可能です。 例えば set_user_attr() は オブジェクトのユーザ属性をその場で更新します。

例:

上書きされた属性

import copy
import datetime

import optuna


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

    # このユーザ属性は常に異なります
    trial.set_user_attr("評価時間", 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)

# 再評価
objective(best_trial)

# 再評価によりユーザ属性が上書きされます
assert best_trial.user_attrs != best_trial_copy.user_attrs

Note

メソッドとプロパティの詳細は Trial を参照してください。

Parameters:
number

Study ごとの Trial の一意な連番。 このフィールドは0から始まる連番です。

state

Trial の状態 (TrialState)。

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)

Interface of report function.

set_system_attr(key, value)

set_user_attr(key, value)

should_prune()

Suggest whether the trial should be pruned or not.

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

Return the elapsed time taken to complete the trial.

last_step

Return the maximum step of intermediate_values in the trial.

number

params

system_attrs

user_attrs

value

values

property duration: timedelta | None

トライアルの完了までに要した経過時間を返します。

returns:

経過時間。

property last_step: int | None

トライアルの intermediate_values における最大ステップを返します。

Returns:

中間値の最大ステップ。

report(value, step)[source]

レポート関数のインターフェース。

FrozenTrial はプルーニングされないため、 このレポート関数は何もしません。

See also

should_prune() を参照してください。

Parameters:
  • value (float) – 目的関数から返された値。

  • step (int) – トライアルのステップ(例:ニューラルネットワークのエポック数)。 プルーナーは step が0から始まると仮定します。例えば、 MedianPruner はウォームアップ機構として stepn_warmup_steps 未満かどうかを単純にチェックします。

Return type:

None

set_system_attr(key, value)[source]

Warning

v3.1.0 で非推奨になりました。この機能は将来的に削除される予定です。 この機能の削除は現在 v5.0.0 で予定されていますが、このスケジュールは変更される可能性があります。 https://github.com/optuna/optuna/releases/tag/v3.1.0 を参照してください。

Parameters:
Return type:

None

should_prune()[source]

トライアルをプルーニングすべきかどうかを提案します。

プルーニングアルゴリズムに関係なく、提案は常に False です。

Note

FrozenTrial はパラメータの組み合わせを1つしかサンプリングしません。

Returns:

False

Return type:

bool

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

Warning

v3.0.0 で非推奨になりました。この機能は将来的に削除される予定です。 この機能の削除は現在 v6.0.0 で予定されていますが、このスケジュールは変更される可能性があります。 https://github.com/optuna/optuna/releases/tag/v3.0.0 を参照してください。

代わりに suggest_float(…, step=…) を使用してください。

Parameters:
Return type:

float

suggest_loguniform(name, low, high)[source]

Warning

v3.0.0 で非推奨になりました。この機能は将来的に削除される予定です。 この機能の削除は現在 v6.0.0 で予定されていますが、このスケジュールは変更される可能性があります。 https://github.com/optuna/optuna/releases/tag/v3.0.0 を参照してください。

代わりに suggest_float(…, log=True) を使用してください。

Parameters:
Return type:

float

suggest_uniform(name, low, high)[source]

Warning

v3.0.0 で非推奨になりました。この機能は将来的に削除される予定です。 この機能の削除は現在 v6.0.0 で予定されていますが、このスケジュールは変更される可能性があります。 https://github.com/optuna/optuna/releases/tag/v3.0.0 を参照してください。

代わりに suggest_float を使用してください。

Parameters:
Return type:

float