Hyperband Oracle

[原始碼]

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) 一起使用,您的調整器類別必須能夠處理此調整器將設定的三個特殊超參數 (hyperparameters):在 Tuner.run_trial 中。

  • "tuner/trial_id":字串,可選設定。當啟動此試驗時,要從哪個試驗載入的 trial_id。
  • "tuner/initial_epoch":整數,總是設定。試驗應從哪個初始 epoch 開始。
  • "tuner/epochs":整數,總是設定。此試驗應訓練的累計 epoch 數。

這些超參數將在 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:整數,訓練一個模型 (model) 的最大 epoch 數。建議將此值設定為略高於預期最大模型收斂所需的 epoch 數,並在訓練期間使用提前停止 (early stopping)(例如,透過 tf.keras.callbacks.EarlyStopping)。預設值為 100。
  • factor:整數,每個括號的 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 會被標記為失敗。