optuna.samplers.BaseSampler

optuna.samplers.BaseSampler[源代码]

采样器的基类。

Optuna 结合了两种类型的采样策略,分别是相对采样独立采样

相对采样同时确定多个参数的值,以便采样算法可以使用参数之间的关系(例如,相关性)。相对采样的目标参数在相对搜索空间中描述,该空间由infer_relative_search_space()确定。

独立采样确定单个参数的值,而不考虑参数之间的任何关系。独立采样的目标参数是不在相对搜索空间中描述的参数。

更具体地说,参数通过以下过程进行采样。在试验开始时,infer_relative_search_space() 被调用以确定该试验的相对搜索空间。在目标函数执行期间,sample_relative() 只在首次对属于相对搜索空间的参数进行采样时调用一次。sample_independent() 用于采样不属于相对搜索空间的参数。

下图描绘了试验的生命周期以及上述三种方法在试验中是如何被调用的。

../../../_images/sampling-sequence.png

方法

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

试验后处理。

此方法在目标函数返回后、试验结束并存储其状态之前被调用。

注意

在 v2.4.0 中作为实验性功能添加。接口在更新版本中可能会在不事先通知的情况下更改。参见 https://github.com/optuna/optuna/releases/tag/v2.4.0

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

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

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

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

返回类型:

None

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

返回类型:

None

抽象方法 infer_relative_search_space(study, trial)[源代码]

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

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

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

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

返回:

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

返回类型:

dict[str, BaseDistribution]

另请参见

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

reseed_rng()[源代码]

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

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

返回类型:

None

抽象方法 sample_independent(study, trial, param_name, param_distribution)[源代码]

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

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

注意

当内建采样器采样新参数时,它们会忽略失败的试验。因此,从采样器的角度来看,失败的试验被视为已删除。

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

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

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

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

返回:

一个参数值。

返回类型:

Any

抽象方法 sample_relative(study, trial, search_space)[源代码]

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

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

注意

当内建采样器采样新参数时,它们会忽略失败的试验。因此,从采样器的角度来看,失败的试验被视为已删除。

参数:
返回:

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

返回类型:

dict[str, Any]