Keras 3 API 文件 / KerasTuner / 調參器 / 基礎 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 模型的調參器類別。

這是所有 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)

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

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

此方法用於查詢在搜尋過程中訓練的模型。為了獲得最佳效能,建議使用在 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)

在時期開始時呼叫。

參數

  • trialTrial 實例。
  • model:Keras Model
  • epoch:目前的時期編號。
  • logs:其他指標。

[來源]

on_batch_begin 方法

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

在批次開始時呼叫。

參數

  • trialTrial 實例。
  • model:Keras Model
  • batch:目前時期內的目前批次編號。
  • logs:其他指標。

[來源]

on_batch_end 方法

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

在批次結束時呼叫。

參數

  • trialTrial 實例。
  • model:Keras Model
  • batch:目前時期內的目前批次編號。
  • logs:其他指標。

[來源]

on_epoch_end 方法

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

在時期結束時呼叫。

參數

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

[來源]

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 存取超參數。
  • *args:由 search 傳遞的位置參數。
  • **kwargs:透過 search 傳入的關鍵字引數。

傳回值

一個 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 模型,這是訓練的週期數。

[來源]

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:一個序列化物件的字典,作為要恢復的狀態。