optuna.samplers.GridSampler
- class optuna.samplers.GridSampler(search_space, seed=None)[source]
グリッドサーチを用いたサンプラー。
GridSampler
を使用すると、スタディ期間中に指定された探索空間内の パラメータの全組み合わせをトライアルが提案します。使用例
import optuna def objective(trial): x = trial.suggest_float("x", -100, 100) y = trial.suggest_int("y", -100, 100) return x**2 + y**2 search_space = {"x": [-50, 0, 50], "y": [-99, 0, 99]} study = optuna.create_study(sampler=optuna.samplers.GridSampler(search_space)) study.optimize(objective)
Note
Ask-and-Tell インターフェース を使用する場合、このサンプラーは最終グリッドの評価直後に
RuntimeError
を発生させます。これはGridSampler
が 内部でstop()
メソッドを呼び出し、渡されたsearch_space
内の 全組み合わせが既に評価されている場合に最適化を自動的に停止するためです。回避策として、 https://github.com/optuna/optuna/issues/4121#issuecomment-1305289910 のようにエラーを 手動で処理する必要があります。Note
GridSampler
は離散型提案メソッドで指定されたパラメータの量子化を 考慮せず、探索空間内で指定された値のいずれかをサンプリングします。例えば、以下のコード例では、x
として整数値ではなく-0.5
または0.5
のいずれかがサンプリングされます。import optuna def objective(trial): # 以下の提案メソッドは -5 から 5 までの整数値を指定しています。 x = trial.suggest_float("x", -5, 5, step=1) return x**2 # グリッドには非整数値が指定されています。 search_space = {"x": [-0.5, 0.5]} study = optuna.create_study(sampler=optuna.samplers.GridSampler(search_space)) study.optimize(objective, n_trials=2)
Note
グリッド内のパラメータ設定は、対応するトライアルが終了するまで完了とみなされません。 このため、分散最適化で複数のトライアルが同時に実行される場合、異なるワーカーが 同じパラメータ設定を提案することがあります。実際のトライアル数がグリッドのサイズを超える 可能性がある点にご注意ください。
Note
GridSampler
をenqueue_trial()
と共に使用する場合、 すべてのパラメータを指定する必要があります。- Parameters:
メソッド
after_trial
(study, trial, state, values)Trial post-processing.
before_trial
(study, trial)Trial pre-processing.
infer_relative_search_space
(study, trial)Infer the search space that will be used by relative sampling in the target trial.
is_exhausted
(study)Return True if all the possible params are evaluated, otherwise return False.
Reseed sampler's random number generator.
sample_independent
(study, trial, param_name, ...)Sample a parameter for a given distribution.
sample_relative
(study, trial, search_space)Sample parameters in a given search space.
- after_trial(study, trial, state, values)[source]
トライアルの事後処理。
このメソッドは目的関数の評価が終了し、トライアルが終了して状態が保存される直前に呼び出されます。
Note
v2.4.0 で実験的機能として追加されました。インターフェースは予告なく変更される可能性が あります。詳細は https://github.com/optuna/optuna/releases/tag/v2.4.0 を参照してください。
- Parameters:
study (Study) – 対象のスタディオブジェクト
trial (FrozenTrial) – 対象のトライアルオブジェクト このオブジェクトを変更する前にコピーを取ってください
state (TrialState) – トライアルの最終状態
values (Sequence[float] | None) – トライアルの最終値 トライアルが成功した場合、
None
ではないことが保証されます
- Return type:
None
- before_trial(study, trial)[source]
トライアルの事前処理
このメソッドは目的関数が呼び出される前に呼び出され、トライアルがインスタンス化された直後に 実行されます。より正確には、トライアルの初期化中、
infer_relative_search_space()
が 呼び出される直前に実行されます。つまり、探索空間を推測する前に行うべき事前処理を担当します。Note
v3.3.0 で実験的機能として追加されました。インターフェースは予告なく変更される可能性が あります。詳細は https://github.com/optuna/optuna/releases/tag/v3.3.0 を参照してください。
- Parameters:
study (Study) – 対象のスタディオブジェクト
trial (FrozenTrial) – 対象のトライアルオブジェクト
- Return type:
None
- infer_relative_search_space(study, trial)[source]
対象トライアルで使用する探索空間を推測します。
このメソッドは
sample_relative()
メソッドの直前に呼び出され、 そのメソッドに探索空間が渡されます。探索空間に含まれないパラメータはsample_independent()
メソッドでサンプリングされます。- Parameters:
study (Study) – 対象のスタディオブジェクト
trial (FrozenTrial) – 対象のトライアルオブジェクト このオブジェクトを変更する前にコピーを取ってください
- Returns:
パラメータ名とパラメータの分布を含む辞書
- Return type:
See also
intersection_search_space()
はinfer_relative_search_space()
の実装例です。
- reseed_rng()[source]
サンプラーの乱数生成器のシードを再設定します。
このメソッドは
n_jobs>1
オプションでトライアルが並列実行される場合、Study
インスタンスによって呼び出されます。 この場合、乱数生成器の状態を含むサンプラーインスタンスが複製され、 同じ値が提案される可能性があります。この問題を防ぐため、 各乱数生成器に異なるシードを割り当てます。- Return type:
None
- sample_independent(study, trial, param_name, param_distribution)[source]
指定された分布からパラメータをサンプリングします。
このメソッドは
sample_relative()
メソッドで返される 探索空間に含まれないパラメータに対してのみ呼び出されます。 ランダムサンプリングや TPE など、パラメータ間の関係を使用しないサンプリングアルゴリズムに適しています。Note
組み込みサンプラーは失敗したトライアルを無視して新しいパラメータをサンプリングします。 したがって、失敗したトライアルはサンプラーの観点では削除されたものとみなされます。
- Parameters:
study (Study) – 対象のスタディオブジェクト
trial (FrozenTrial) – 対象のトライアルオブジェクト このオブジェクトを変更する前にコピーを取ってください
param_name (str) – サンプリングするパラメータの名前
param_distribution (BaseDistribution) – サンプリングアルゴリズムの事前分布とスケールを指定する分布オブジェクト
- Returns:
パラメータ値
- Return type:
Any
- sample_relative(study, trial, search_space)[source]
指定された探索空間からパラメータをサンプリングします。
このメソッドは各トライアルの開始時に1回呼び出されます (目的関数の評価の直前)。 ガウス過程や CMA-ES など、パラメータ間の関係を使用するサンプリングアルゴリズムに適しています。
Note
組み込みサンプラーは失敗したトライアルを無視して新しいパラメータをサンプリングします。 したがって、失敗したトライアルはサンプラーの観点では削除されたものとみなされます。
- Parameters:
study (Study) – 対象のスタディオブジェクト
trial (FrozenTrial) – 対象のトライアルオブジェクト このオブジェクトを変更する前にコピーを取ってください
search_space (dict[str, BaseDistribution]) –
infer_relative_search_space()
で返される探索空間
- Returns:
パラメータ名と値を含む辞書
- Return type: