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 的 Oracle 类。
请注意,要将此 Oracle 与您自己子类的 Tuner 一起使用,您的 Tuner 类必须能够在 Tuner.run_trial 中处理由该 Tuner 设置的三个特殊超参数。
这些超参数将在 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(...)
参数
keras_tuner.Objective 实例,或一个 keras_tuner.Objective 对象和字符串的列表。如果是一个字符串,将推断优化的方向(最小化或最大化)。如果是一个 keras_tuner.Objective 对象列表,我们将最小化所有目标的总和以进行最小化,或最大化所有目标的总和以进行最大化。当 Tuner.run_trial() 或 HyperModel.fit() 返回一个单一的浮点数作为要最小化的目标时,objective 参数是可选的。tf.keras.callbacks.EarlyStopping)。默认为 100。max_epochs * (math.log(max_epochs, factor) ** 2) 个 epoch。建议将其设置为在您的资源预算范围内尽可能高的值。默认为 1。hyperparameters 中指定的超参数条目添加到搜索空间。如果为 false,则将使用这些参数的默认值。默认为 True。hyperparameters 中列出的超参数条目。默认为 True。Trial 的最大次数。Trial 的最大数量。达到此数量时,搜索将停止。当重试均未成功时,Trial 将被标记为失败。