Hyperband 外观
smac.facade.hyperband_facade #
HyperbandFacade #
HyperbandFacade(
scenario: Scenario,
target_function: Callable | str | AbstractRunner,
*,
model: AbstractModel | None = None,
acquisition_function: AbstractAcquisitionFunction
| None = None,
acquisition_maximizer: AbstractAcquisitionMaximizer
| None = None,
initial_design: AbstractInitialDesign | None = None,
random_design: AbstractRandomDesign | None = None,
intensifier: AbstractIntensifier | None = None,
multi_objective_algorithm: AbstractMultiObjectiveAlgorithm
| None = None,
runhistory_encoder: AbstractRunHistoryEncoder
| None = None,
config_selector: ConfigSelector | None = None,
logging_level: int
| Path
| Literal[False]
| None = None,
callbacks: list[Callback] = None,
overwrite: bool = False,
dask_client: Client | None = None
)
基类: RandomFacade
用于算法配置的无模型 Hyperband [LJDR18] 外观。
使用随机攻击性在线竞赛 (ROAR) 来比较配置、随机初始设计和 Hyperband 强化器。
警告
smac.main.config_selector.ConfigSelector
包含 min_trials
参数。此参数决定了训练代理模型所需的样本数量。如果涉及预算,会优先检查最高预算。例如,如果 min_trials 为三,但在最高预算的运行历史中只找到两次试验,我们将转而使用较低预算的试验。
源代码位于 smac/facade/abstract_facade.py
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 |
|
get_acquisition_function staticmethod
#
get_acquisition_function(
scenario: Scenario,
) -> AbstractAcquisitionFunction
随机外观不使用采集函数。因此,我们只返回一个虚拟函数。
源代码位于 smac/facade/random_facade.py
get_acquisition_maximizer staticmethod
#
get_acquisition_maximizer(
scenario: Scenario,
) -> RandomSearch
我们返回 RandomSearch
作为最大化器,它从配置空间随机采样配置,因此既不使用采集函数也不使用模型。
源代码位于 smac/facade/random_facade.py
get_config_selector staticmethod
#
get_config_selector(
scenario: Scenario,
*,
retrain_after: int = 8,
retries: int = 16
) -> ConfigSelector
返回默认的配置选择器。
源代码位于 smac/facade/abstract_facade.py
get_initial_design staticmethod
#
get_initial_design(
scenario: Scenario,
*,
additional_configs: list[Configuration] = None
) -> DefaultInitialDesign
返回一个初始设计,它返回默认配置。
参数#
additional_configs: list[Configuration], defaults to [] 向初始设计添加额外的配置。
源代码位于 smac/facade/random_facade.py
get_intensifier staticmethod
#
get_intensifier(
scenario: Scenario,
*,
eta: int = 3,
n_seeds: int = 1,
instance_seed_order: str | None = "shuffle_once",
max_incumbents: int = 10,
incumbent_selection: str = "highest_observed_budget"
) -> Hyperband
返回一个 Hyperband 强化器实例。支持预算。
int, defaults to 3
控制在逐次减半的每一轮中丢弃的配置比例的输入。
n_seeds : int, defaults to 1 每个实例使用多少个种子。 instance_seed_order : str, defaults to "shuffle_once" 如何排列实例-种子对。可设置为: * None:完全不打乱,使用用户提供的实例-种子顺序。 * "shuffle_once":一次性打乱实例-种子键,并在所有运行中使用相同顺序。 * "shuffle":对每个轮次单独打乱实例-种子键。 incumbent_selection : str, defaults to "any_budget" 在使用预算时如何选择最佳配置。可设置为: * "any_budget":最佳配置是在任何预算下表现最好的,即不考虑预算的最佳性能。 * "highest_observed_budget":最佳配置是迄今为止最高预算运行中表现最好的。 * "highest_budget":仅根据最高预算选择最佳配置。 max_incumbents : int, defaults to 10 在多目标情况下,跟踪多少个最佳配置。
源代码位于 smac/facade/hyperband_facade.py
get_model staticmethod
#
get_model(scenario: Scenario) -> RandomModel
模型用于采集函数。由于我们不使用采集函数,我们返回一个虚拟模型(在这种情况下返回随机值)。
源代码位于 smac/facade/random_facade.py
get_multi_objective_algorithm staticmethod
#
get_multi_objective_algorithm(
scenario: Scenario,
*,
objective_weights: list[float] | None = None
) -> MeanAggregationStrategy
返回多目标算法的均值聚合策略。
参数#
scenario : Scenario objective_weights : list[float] | None, defaults to None 用于加权平均目标的权重。必须与目标数量长度相同。
源代码位于 smac/facade/random_facade.py
get_random_design staticmethod
#
get_random_design(
scenario: Scenario,
) -> AbstractRandomDesign
就像采集函数一样,我们不使用随机设计。因此,我们返回一个虚拟设计。
源代码位于 smac/facade/random_facade.py
get_runhistory_encoder staticmethod
#
get_runhistory_encoder(
scenario: Scenario,
) -> RunHistoryEncoder
optimize #
优化算法的配置。
参数#
data_to_scatter: dict[str, Any] | None 我们首先注意到此参数仅对 dask_runner 有效!当用户将数据从本地进程分散到分布式网络时,数据会以轮询方式按核心数分组分布。粗略地说,我们可以将此数据保留在内存中,这样就不必每次需要执行带有大数据集的目标函数时都对数据进行(反)序列化。例如,当您的目标函数具有在所有目标函数之间共享的大数据集时,此参数非常有用。
返回值
incumbent : Configuration 找到的最佳配置。
源代码位于 smac/facade/abstract_facade.py
tell #
tell(
info: TrialInfo, value: TrialValue, save: bool = True
) -> None
将试验结果添加到运行历史中并更新强化器。
参数#
info: TrialInfo 描述要处理结果的试验。 value: TrialValue 包含关于试验执行的相关信息。 save : bool, optional to True 是否应保存运行历史。
源代码位于 smac/facade/abstract_facade.py
validate #
验证配置,在与优化过程中使用的种子不同的种子上,并在最高预算下进行(如果预算类型是实数值)。
参数#
config : Configuration 要验证的配置 instances : list[str] | None, defaults to None 要验证的实例。如果为 None,则使用场景中指定的所有实例。如果预算类型是实数值,则忽略此参数。 seed : int | None, defaults to None 如果为 None,则使用场景中的种子。
返回值#
cost : float | list[float] 配置的平均成本。在多保真度情况下,每个目标的成本都会被平均。