optuna.samplers.PartialFixedSampler

class optuna.samplers.PartialFixedSampler(fixed_params, base_sampler)[source]

带有部分固定参数的采样器。

示例

经过若干步优化后,您可以固定参数 y 的值并重新优化。

import optuna


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


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

best_params = study.best_params
fixed_params = {"y": best_params["y"]}
partial_sampler = optuna.samplers.PartialFixedSampler(fixed_params, study.sampler)

study.sampler = partial_sampler
study.optimize(objective, n_trials=10)
参数:
  • fixed_params (dict[str, Any]) – 一个包含要固定参数的字典。

  • base_sampler (BaseSampler) – 用于采样未固定参数的采样器。

注意

在 v2.4.0 中添加作为实验性功能。接口可能会在后续版本中更改,恕不另行通知。请参见 https://github.com/optuna/optuna/releases/tag/v2.4.0

方法

after_trial(study, trial, state, values)

试验后处理。

before_trial(study, trial)

试验预处理。

infer_relative_search_space(study, trial)

推断目标试验中相对采样将使用的搜索空间。

reseed_rng()

为采样器的随机数生成器重新设定种子。

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) – 目标 Study 对象。

  • trial (FrozenTrial) – 目标试验对象。在修改此对象之前请先复制一份。

  • state (TrialState) – 结果试验状态。

  • values (Sequence[float] | None) – 结果试验值。如果试验成功,保证不会是 None

返回类型:

None

before_trial(study, trial)[source]

试验预处理。

此方法在调用目标函数之前和实例化试验之后立即被调用。更精确地说,此方法在试验初始化期间、紧接在 infer_relative_search_space() 调用之前被调用。换句话说,它负责在推断搜索空间之前应进行的预处理。

注意

在 v3.3.0 中添加作为实验性功能。接口可能会在后续版本中更改,恕不另行通知。请参见 https://github.com/optuna/optuna/releases/tag/v3.3.0

参数:
  • study (Study) – 目标 Study 对象。

  • trial (FrozenTrial) – 目标试验对象。

返回类型:

None

infer_relative_search_space(study, trial)[source]

推断目标试验中相对采样将使用的搜索空间。

此方法在 sample_relative() 方法之前被调用,并且此方法返回的搜索空间会传递给它。未包含在搜索空间中的参数将通过 sample_independent() 方法采样。

参数:
  • study (Study) – 目标 Study 对象。

  • trial (FrozenTrial) – 目标试验对象。在修改此对象之前请先复制一份。

返回:

一个包含参数名称和参数分布的字典。

返回类型:

dict[str, BaseDistribution]

另请参阅

请参考 intersection_search_space() 作为 infer_relative_search_space() 的实现。

reseed_rng()[source]

为采样器的随机数生成器重新设定种子。

如果试验以并行方式执行(选项为 n_jobs>1),此方法由 Study 实例调用。在这种情况下,采样器实例(包括随机数生成器的状态)将被复制,并且它们可能会建议相同的值。为防止此问题,此方法为每个随机数生成器分配不同的种子。

返回类型:

None

sample_independent(study, trial, param_name, param_distribution)[source]

为一个给定分布采样一个参数。

此方法仅针对未包含在 sample_relative() 方法返回的搜索空间中的参数调用。此方法适用于不使用参数之间关系的采样算法,例如随机采样和 TPE。

注意

任何内置采样器在采样新参数时都会忽略失败的试验。因此,在采样器的视角下,失败的试验被视为已删除。

参数:
  • study (Study) – 目标 Study 对象。

  • trial (FrozenTrial) – 目标试验对象。在修改此对象之前请先复制一份。

  • param_name (str) – 采样的参数名称。

  • param_distribution (BaseDistribution) – 指定采样算法先验和/或尺度的分布对象。

返回:

参数值。

返回类型:

Any

sample_relative(study, trial, search_space)[source]

在给定搜索空间中采样参数。

此方法在每次试验开始时被调用一次,即在评估目标函数之前。此方法适用于使用参数之间关系的采样算法,例如高斯过程和 CMA-ES。

注意

任何内置采样器在采样新参数时都会忽略失败的试验。因此,在采样器的视角下,失败的试验被视为已删除。

参数:
返回:

一个包含参数名称和值的字典。

返回类型:

dict[str, Any]