optuna.samplers.BruteForceSampler
- class optuna.samplers.BruteForceSampler(seed=None, avoid_premature_stop=False)[source]
使用暴力搜索的采样器。
此采样器对定义的搜索空间执行穷举搜索。
示例
import optuna def objective(trial): c = trial.suggest_categorical("c", ["float", "int"]) if c == "float": return trial.suggest_float("x", 1, 3, step=0.5) elif c == "int": a = trial.suggest_int("a", 1, 3) b = trial.suggest_int("b", a, 3) return a + b study = optuna.create_study(sampler=optuna.samplers.BruteForceSampler()) study.optimize(objective)
注意
定义的搜索空间必须是有限的。因此,在使用
FloatDistribution或suggest_float()时,不允许使用step=None。注意
当同一
Study中的建议范围或参数发生更改时,该采样器可能无法尝试整个搜索空间。- 参数:
seed (int | None) – 用于固定试验顺序的种子,因为搜索顺序是随机打乱的。请注意,不建议在分布式优化设置中使用此选项,因为此选项无法保证试验顺序,并且可能在分布式优化期间增加重复建议的数量。
avoid_premature_stop (bool) – 如果为
True,则采样器将执行严格的穷举搜索。请注意,启用此选项可能会增加重复采样的可能性。当未启用此选项时(默认),采样器会应用更宽松的标准来确定何时停止搜索,这可能导致搜索空间覆盖不完整。有关更多信息,请参阅 https://github.com/optuna/optuna/issues/5780。
注意
在 v3.1.0 中作为实验性功能添加。接口可能在后续版本中在不事先通知的情况下发生更改。请参阅 https://github.com/optuna/optuna/releases/tag/v3.1.0。
方法
after_trial(study, trial, state, values)试验后处理。
before_trial(study, trial)试验预处理。
infer_relative_search_space(study, trial)为目标试验推断将使用的搜索空间。
重新设置采样器的随机数生成器。
sample_independent(study, trial, param_name, ...)为给定的分布采样一个参数。
sample_relative(study, trial, search_space)在给定的搜索空间中采样参数。
- after_trial(study, trial, state, values)[source]
试验后处理。
此方法在目标函数返回后、试验完成并存储其状态之前调用。
注意
于 v2.4.0 添加为实验性功能。接口可能在新版本中更改,恕不另行通知。请参阅 https://github.com/optuna/optuna/releases/tag/v2.4.0。
- 参数:
study (Study) – 目标研究对象。
trial (FrozenTrial) – 目标试验对象。修改此对象前请先复制。
state (TrialState) – 结果试验状态。
- 返回类型:
无
- before_trial(study, trial)
试验预处理。
此方法在调用目标函数之前、试验实例化之后调用。更准确地说,此方法在试验初始化期间调用,就在调用
infer_relative_search_space()调用之前。换句话说,它负责在推断搜索空间之前应执行的预处理。注意
于 v3.3.0 作为实验性功能添加。界面可能会在较新版本中更改,恕不另行通知。请参阅 https://github.com/optuna/optuna/releases/tag/v3.3.0。
- 参数:
study (Study) – 目标研究对象。
trial (FrozenTrial) – 目标试验对象。
- 返回类型:
无
- infer_relative_search_space(study, trial)[source]
为目标试验推断将使用的搜索空间。
此方法在调用
sample_relative()方法之前调用,并且此方法返回的搜索空间将传递给它。未包含在搜索空间中的参数将使用sample_independent()方法进行采样。- 参数:
study (Study) – 目标研究对象。
trial (FrozenTrial) – 目标试验对象。修改此对象前请先复制。
- 返回:
包含参数名称和参数分布的字典。
- 返回类型:
另请参阅
请参阅
intersection_search_space()作为infer_relative_search_space()的实现。
- reseed_rng()
重新设置采样器的随机数生成器。
如果试验与
n_jobs>1选项并行执行,则Study实例将调用此方法。在这种情况下,采样器实例将被复制,包括随机数生成器的状态,并且它们可能会建议相同的值。为防止此问题,此方法为每个随机数生成器分配不同的种子。- 返回类型:
无
- sample_independent(study, trial, param_name, param_distribution)[source]
为给定的分布采样一个参数。
此方法仅对未包含在
sample_relative()方法返回的搜索空间中的参数进行调用。此方法适用于不使用参数之间关系的采样算法,例如随机采样和 TPE。注意
任何内置采样器在采样新参数时都会忽略失败的试验。因此,在采样器看来,失败的试验被视为已删除。
- 参数:
study (Study) – 目标研究对象。
trial (FrozenTrial) – 目标试验对象。修改此对象前请先复制。
param_name (str) – 采样参数的名称。
param_distribution (BaseDistribution) – 指定采样算法先验和/或尺度的分布对象。
- 返回:
参数值。
- 返回类型:
Any
- sample_relative(study, trial, search_space)[source]
在给定的搜索空间中采样参数。
此方法在每次试验开始时调用一次,即在评估目标函数之前。此方法适用于使用参数之间关系的采样算法,例如高斯过程和 CMA-ES。
注意
任何内置采样器在采样新参数时都会忽略失败的试验。因此,在采样器看来,失败的试验被视为已删除。
- 参数:
study (Study) – 目标研究对象。
trial (FrozenTrial) – 目标试验对象。修改此对象前请先复制。
search_space (dict[str, BaseDistribution]) – 由
infer_relative_search_space()返回的搜索空间。
- 返回:
包含参数名称和值的字典。
- 返回类型: