KerasTuner: 超参数调优 / API 文档 / Oracles / 基础 Oracle 类

基础 Oracle 类

[源代码]

Oracle

keras_tuner.Oracle(
    objective=None,
    max_trials=None,
    hyperparameters=None,
    allow_new_entries=True,
    tune_new_entries=True,
    seed=None,
    max_retries_per_trial=0,
    max_consecutive_failed_trials=3,
)

实现超参数优化算法。

在并行调优设置中,只有一个 Oracle 实例。工作进程通过 gRPC 调用与中心化的 Oracle 实例进行通信,以调用 Oracle 方法。

Trial 对象通常被用作通过 gRPC 调用在工作进程 Tuner 实例和 Oracle 之间传递信息的通信包。例如,Oracle.create_trial() 返回一个 Trial 对象,而 Oracle.end_trial() 在其参数中接受一个 Trial

同一 Trial 实例的新副本在通过 gRPC 调用时会被重建。当工作进程 Tuner 中对 Trial 对象的更改通过调用 Oracle.end_trial() 传递回 Oracle 时,这些更改会同步到 Oracle 中的原始副本。

参数

  • objective: 一个字符串,keras_tuner.Objective 实例,或 keras_tuner.Objective 和字符串的列表。如果是字符串,将推断优化的方向(最小化或最大化)。如果是 keras_tuner.Objective 的列表,我们将最小化所有要最小化的目标的总和,减去所有要最大化的目标的总和。当 Tuner.run_trial()HyperModel.fit() 返回一个表示要最小化的目标的单个浮点数时,objective 参数是可选的。
  • max_trials: 整数,最多要测试的试验(模型配置)的总数。请注意,如果搜索空间已耗尽,oracle 可能会在测试完 max_trial 模型之前中断搜索。
  • hyperparameters: 可选的 HyperParameters 实例。可用于覆盖(或提前注册)搜索空间中的超参数。
  • tune_new_entries: 布尔值,指示是否应将超模型请求但未在 hyperparameters 中指定的超参数条目添加到搜索空间。如果为 False,则将使用这些参数的默认值。默认为 True。
  • allow_new_entries: 布尔值,指示是否允许超模型请求未列在 hyperparameters 中的超参数条目。默认为 True。
  • seed: 整型。随机种子。
  • max_retries_per_trial: 整数。默认为 0。如果试验崩溃或结果无效,最多重试 Trial 的次数。
  • max_consecutive_failed_trials: 整数。默认为 3。最大连续失败 Trial 的次数。达到此数字时,搜索将停止。当没有任何重试成功时,Trial 被标记为失败。

[源代码]

wrapped_func 函数

keras_tuner.Oracle.create_trial()

[源代码]

wrapped_func 函数

keras_tuner.Oracle.end_trial()

[源代码]

get_best_trials 方法

Oracle.get_best_trials(num_trials=1)

返回最佳 Trial


[源代码]

get_state 方法

Oracle.get_state()

返回此对象的当前状态。

save 期间调用此方法。

返回值

一个可序列化对象的字典作为状态。


[源代码]

set_state 方法

Oracle.set_state(state)

设置此对象的当前状态。

reload 期间调用此方法。

参数

  • state: 一个序列化对象的字典,作为要恢复的状态。

[源代码]

score_trial 方法

Oracle.score_trial(trial)

为一个已完成的 Trial 打分。

此方法可以在子类中被重写,以提供一组超参数值的得分。此方法在 end_trial 中对已完成的 Trial 进行调用。

参数

  • trial: 一个已完成的 Trial 对象。

[源代码]

populate_space 方法

Oracle.populate_space(trial_id)

为试验填充超参数空间的值。

此方法应在子类中被重写,并在 create_trial 中调用,以便用值填充超参数空间。

参数

  • trial_id: 一个字符串,此 Trial 的 ID。

返回值

一个字典,包含键 "values" 和 "status",其中 "values" 是参数名到建议值的映射,"status" 应为 "RUNNING"(试验可以正常开始)、"IDLE"(oracle 正在等待某事且无法创建试验)或 "STOPPED"(oracle 已完成搜索且不应创建新的试验)之一。


[源代码]

wrapped_func 函数

keras_tuner.Oracle.update_trial()