Keras 3 API 文件 / KerasTuner / 預言機 / 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": 字串,可選。從開始此試驗時要載入的試驗的 trial_id。
  • "tuner/initial_epoch": 整數,必填。試驗應從中開始的初始週期。
  • "tuner/epochs": 整數,必填。此試驗應訓練的累積週期數。

這些超參數將在 Hyperband 演算法的「逐次減半」部分期間設定。

範例

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:整數,訓練一個模型的最大週期數。建議將此值設定為略高於最大模型預期收斂的週期數,並在訓練期間使用提前停止(例如,透過 tf.keras.callbacks.EarlyStopping)。預設值為 100。
  • factor:整數,每個括號的週期數和模型數的縮減因子。預設值為 3。
  • hyperband_iterations:整數,至少為 1,表示迭代完整 Hyperband 演算法的次數。一次迭代將在所有試驗中執行大約 max_epochs * (math.log(max_epochs, factor) ** 2) 個累積 epochs。建議您將此值設定為資源預算允許的最大值。預設值為 1。
  • seed:可選的整數,表示隨機種子。
  • hyperparameters:可選的 HyperParameters 實例。可用於覆寫(或預先註冊)搜尋空間中的超參數。
  • tune_new_entries:布林值,表示是否應將超模型請求但未在 hyperparameters 中指定的超參數項目添加到搜尋空間。如果為否,則將使用這些參數的預設值。預設值為 True。
  • allow_new_entries:布林值,表示是否允許超模型請求 hyperparameters 中未列出的超參數項目。預設值為 True。
  • max_retries_per_trial:整數。預設值為 0。如果 Trial 崩潰或結果無效,則重試 Trial 的最大次數。
  • max_consecutive_failed_trials:整數。預設值為 3。連續失敗的 Trial 的最大次數。當達到此數字時,搜尋將停止。當所有重試均失敗時,Trial 將標記為失敗。