KerasTuner:超參數調整 / API 文件 / Tuner / 基礎的 Tuner 類別

基礎的 Tuner 類別

[原始碼]

Tuner 類別

keras_tuner.Tuner(
    oracle,
    hypermodel=None,
    max_model_size=None,
    optimizer=None,
    loss=None,
    metrics=None,
    distribution_strategy=None,
    directory=None,
    project_name=None,
    logger=None,
    tuner_id=None,
    overwrite=False,
    executions_per_trial=1,
    **kwargs
)

用於 Keras 模型的 Tuner 類別。

這是所有 Keras 模型調整器的基礎 Tuner 類別。它管理 Keras 模型的建構、訓練、評估和儲存。可以透過繼承此類別來建立新的調整器。

所有 Keras 相關邏輯都在 Tuner.run_trial() 及其子常式中。當繼承 Tuner 時,如果不呼叫 super().run_trial(),則可以調整任何內容。

參數

  • oracleOracle 類別的實例。
  • hypermodelHyperModel 類別的實例(或接受超參數並回傳 Model 實例的可呼叫物件)。當覆寫 Tuner.run_trial() 且不使用 self.hypermodel 時,此參數為選用。
  • max_model_size:整數,模型參數中純量的最大數量。大於此值的模型將會被拒絕。
  • optimizer:選用的最佳化器。它用於覆寫模型在 compile 步驟中的 optimizer 參數。如果超模型沒有編譯它產生的模型,則必須指定此參數。
  • loss:選用的損失函數。可用於覆寫模型在 compile 步驟中的 loss 參數。如果超模型沒有編譯它產生的模型,則必須指定此參數。
  • metrics:選用的指標。可用於覆寫模型在 compile 步驟中的 metrics 參數。如果超模型沒有編譯它產生的模型,則必須指定此參數。
  • distribution_strategytf.distribute.Strategy 的選用實例。如果指定,每個試驗將在此範圍下執行。例如,tf.distribute.MirroredStrategy(['/gpu:0', '/gpu:1']) 將在兩個 GPU 上執行每個試驗。目前僅支援單一工作站策略。
  • directory:字串,工作目錄的相對路徑。
  • project_name:字串,用作此 Tuner 所儲存檔案的前置名稱。
  • tuner_id:選用字串,用作此 Tuner 的 ID。
  • overwrite:布林值,預設為 False。如果為 False,則在找到同名的現有專案時,會重新載入該專案。否則,會覆寫該專案。
  • executions_per_trial:整數,每個試驗(從新的初始化開始,從頭訓練模型)執行的次數(模型組態)。模型指標可能會因隨機初始化而有很大差異,因此,為了評估給定的一組超參數值的效能,最好每個試驗執行數次。
  • **kwargsBaseTuner 的引數。

屬性

  • remaining_trials:剩餘的試驗次數,如果未設定 max_trials 則為 None。這在恢復先前停止的搜尋時很有用。

[原始碼]

get_best_hyperparameters 方法

Tuner.get_best_hyperparameters(num_trials=1)

回傳由目標決定的最佳超參數。

此方法可用於重新實例化在搜尋過程中找到的(未訓練)最佳模型。

範例

best_hp = tuner.get_best_hyperparameters()[0]
model = tuner.hypermodel.build(best_hp)

參數

  • num_trials:選用的 HyperParameters 物件回傳數量。

回傳

從最佳到最差排序的 HyperParameter 物件清單。


[原始碼]

get_best_models 方法

Tuner.get_best_models(num_models=1)

回傳由調整器目標決定的最佳模型。

這些模型會載入與其最佳檢查點(在最佳試驗的最佳 epoch 結束時)對應的權重。

此方法用於查詢在搜尋期間訓練的模型。為了獲得最佳效能,建議使用在 search 期間找到的最佳超參數在完整資料集上重新訓練您的模型,這可以使用 tuner.get_best_hyperparameters() 取得。

參數

  • num_models:選用的最佳模型回傳數量。預設為 1。

回傳

從最佳到最差排序的訓練模型實例清單。


[原始碼]

get_state 方法

Tuner.get_state()

回傳此物件的目前狀態。

此方法在 save 期間呼叫。

回傳

做為狀態的可序列化物件字典。


[原始碼]

load_model 方法

Tuner.load_model(trial)

從給定的試驗載入模型。

對於向 Oracle 報告中間結果的模型,通常 load_model 應透過依賴 trial.best_step 來載入最佳報告的 step

參數

  • trialTrial 實例,對應於要載入模型的 Trial

[原始碼]

on_epoch_begin 方法

Tuner.on_epoch_begin(trial, model, epoch, logs=None)

在 epoch 開始時呼叫。

參數

  • trialTrial 實例。
  • model:Keras Model
  • epoch:目前的 epoch 數字。
  • logs:其他指標。

[原始碼]

on_batch_begin 方法

Tuner.on_batch_begin(trial, model, batch, logs)

在批次開始時呼叫。

參數

  • trialTrial 實例。
  • model:Keras Model
  • batch:目前 epoch 內的目前批次數字。
  • logs:其他指標。

[原始碼]

on_batch_end 方法

Tuner.on_batch_end(trial, model, batch, logs=None)

在批次結束時呼叫。

參數

  • trialTrial 實例。
  • model:Keras Model
  • batch:目前 epoch 內的目前批次數字。
  • logs:其他指標。

[原始碼]

on_epoch_end 方法

Tuner.on_epoch_end(trial, model, epoch, logs=None)

在 epoch 結束時呼叫。

參數

  • trialTrial 實例。
  • model:Keras Model
  • epoch:目前的 epoch 數字。
  • logs:字典。此 epoch 的指標。這應包含此 epoch 的目標值。

[原始碼]

run_trial 方法

Tuner.run_trial(trial, )

評估一組超參數值。

此方法在 search 期間會被多次呼叫,以建立和評估具有不同超參數的模型,並回傳目標值。

範例

您可以將它與 self.hypermodel 搭配使用,以建立和擬合模型。

def run_trial(self, trial, *args, **kwargs):
    hp = trial.hyperparameters
    model = self.hypermodel.build(hp)
    return self.hypermodel.fit(hp, model, *args, **kwargs)

您也可以將其用作任何事物的黑箱最佳化器。

def run_trial(self, trial, *args, **kwargs):
    hp = trial.hyperparameters
    x = hp.Float("x", -2.0, 2.0)
    y = x * x + 2 * x + 1
    return y

參數

  • trialTrial 實例,其中包含執行此試驗所需資訊。超參數可以透過 trial.hyperparameters 存取。
  • *argssearch 傳遞的位置引數。
  • **kwargssearch 傳遞的關鍵字引數。

回傳

History 物件,即 model.fit() 的回傳值、字典、浮點數或其中一種型別的清單。

如果回傳字典,則應為要追蹤的指標字典。索引鍵是指標名稱,其中包含 objective 名稱。這些值應為指標值。

如果回傳浮點數,則應為 objective 值。

如果多次評估模型,您可以回傳上述任何型別的結果清單。最終目標值是清單中結果的平均值。


[原始碼]

results_summary 方法

Tuner.results_summary(num_trials=10)

顯示調整結果摘要。

此方法會列印搜尋結果的摘要,包括每個試驗的超參數值和評估結果。

參數

  • num_trials:選用的要顯示的試驗次數。預設為 10。

[原始碼]

save_model 方法

Tuner.save_model(trial_id, model, step=0)

儲存給定試驗的模型。

參數

  • trial_id:對應於此模型的 Trial ID。
  • model:訓練的模型。
  • step:整數,對於向 Oracle 報告中間結果的模型,已儲存檔案對應的步驟。例如,對於 Keras 模型,這是訓練的 epoch 數量。

[原始碼]

search 方法

Tuner.search(*fit_args, **fit_kwargs)

執行搜尋以尋找最佳超參數組態。

參數

  • *fit_args:應傳遞給 run_trial 的位置引數,例如訓練和驗證資料。
  • **fit_kwargs:應傳遞給 run_trial 的關鍵字引數,例如訓練和驗證資料。

[原始碼]

search_space_summary 方法

Tuner.search_space_summary(extended=False)

列印搜尋空間摘要。

這些方法會列印搜尋空間中超參數的摘要,可以在呼叫 search 方法之前呼叫。

參數

  • extended:選用的布林值,是否顯示延伸摘要。預設為 False。

[原始碼]

set_state 方法

Tuner.set_state(state)

設定此物件的目前狀態。

此方法在 reload 期間呼叫。

參數

  • state:做為要還原狀態的可序列化物件字典。