KerasTuner: 超参数调优 / API 文档 / 预言机 / Hyperband 预言机

Hyperband 预言机

[源代码]

HyperbandOracle

keras_tuner.oracles.HyperbandOracle(
    objective=None,
    max_epochs=100,
    factor=3,
    hyperband_iterations=1,
    seed=None,
    hyperparameters=None,
    allow_new_entries=True,
    tune_new_entries=True,
    max_retries_per_trial=0,
    max_consecutive_failed_trials=3,
)

Hyperband 的预言机类。

请注意,要将此预言机与您自己的子类化调优器配合使用,您的调优器类必须能够处理在 Tuner.run_trial 中由此调优器设置的三个特殊超参数

  • "tuner/trial_id": String,可选。启动此试验时要从中加载的 Trial 的 trial_id。
  • "tuner/initial_epoch": Int,始终设置。Trial 应开始的初始 epoch。
  • "tuner/epochs": Int,始终设置。此 Trial 应训练的累积 epoch 数。

这些超参数将在 Hyperband 算法的“逐次减半”(successive halving)部分期间设置。

示例

def run_trial(self, trial, *args, **kwargs):
    hp = trial.hyperparameters
    if "tuner/trial_id" in hp:
        past_trial = self.oracle.get_trial(hp['tuner/trial_id'])
        model = self.load_model(past_trial)
    else:
        model = self.hypermodel.build(hp)

    initial_epoch = hp['tuner/initial_epoch']
    last_epoch = hp['tuner/epochs']

    for epoch in range(initial_epoch, last_epoch):
        self.on_epoch_begin(...)
        for step in range(...):
            # Run model training step here.
        self.on_epoch_end(...)

参数

  • objective: 一个字符串,keras_tuner.Objective 实例,或一个 keras_tuner.Objective 实例和字符串的列表。如果是字符串,将推断优化方向(最小化或最大化)。如果是一个 keras_tuner.Objective 实例列表,我们将最小化所有要最小化的目标的总和,减去所有要最大化的目标的总和。当 Tuner.run_trial()HyperModel.fit() 返回一个单浮点数作为要最小化的目标时,objective 参数是可选的。
  • max_epochs: 整数,训练一个模型的最大 epoch 数。建议将此值设置为略高于最大模型预期收敛 epoch 数的值,并在训练期间使用早停(例如,通过 tf.keras.callbacks.EarlyStopping)。默认为 100。
  • factor: 整数,每个 bracket 的 epoch 数和模型数的缩减因子。默认为 3。
  • hyperband_iterations: 整数,至少为 1,完整 Hyperband 算法的迭代次数。一次迭代将在所有试验中运行约 max_epochs * (math.log(max_epochs, factor) ** 2) 个累积 epoch。建议根据您的资源预算将其设置为尽可能高的值。默认为 1。
  • seed: 可选整数,随机种子。
  • hyperparameters: 可选的 HyperParameters 实例。可用于覆盖(或提前注册)搜索空间中的超参数。
  • tune_new_entries: 布尔值,超模型请求但未在 hyperparameters 中指定的超参数条目是否应添加到搜索空间中。如果否,则将使用这些参数的默认值。默认为 True。
  • allow_new_entries: 布尔值,是否允许超模型请求未在 hyperparameters 中列出的超参数条目。默认为 True。
  • max_retries_per_trial: 整数。默认为 0。如果试验崩溃或结果无效,重试 Trial 的最大次数。
  • max_consecutive_failed_trials: 整数。默认为 3。最大连续失败 Trial 的数量。达到此数量时,搜索将停止。当所有重试都失败时,Trial 被标记为失败。