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()
,它可以调优任何东西。
参数
Oracle
类实例。HyperModel
类实例(或接受超参数并返回 Model
实例的可调用对象)。当覆盖 Tuner.run_trial()
且不使用 self.hypermodel
时,此参数是可选的。compile
步骤中的 optimizer
参数。如果 hypermodel 没有编译其生成的模型,则必须指定此参数。compile
步骤中的 loss
参数。如果 hypermodel 没有编译其生成的模型,则必须指定此参数。compile
步骤中的 metrics
参数。如果 hypermodel 没有编译其生成的模型,则必须指定此参数。tf.distribute.Strategy
实例。如果指定,每个试验都将在此范围内运行。例如,tf.distribute.MirroredStrategy(['/gpu:0', '/gpu:1'])
将在两个 GPU 上运行每个试验。目前仅支持单工作器策略。Tuner
保存文件前缀的名称。Tuner
的 ID。False
。如果为 False
,则在找到同名项目时重新加载该项目。否则,覆盖该项目。BaseTuner
的参数。属性
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)
参数
HyperParameters
对象数量。返回值
HyperParameter
对象列表,按从最优到最劣排序。
get_best_models
方法Tuner.get_best_models(num_models=1)
返回由调优器目标确定的最佳模型。
模型加载时使用了与最佳检查点(在最佳试验的最佳 epoch 结束时)相对应的权重。
此方法用于查询在搜索过程中训练的模型。为了获得最佳性能,建议使用在 search
期间找到的最佳超参数在完整数据集上重新训练您的模型,这些超参数可以通过 tuner.get_best_hyperparameters()
获得。
参数
返回值
经过训练的模型实例列表,按从最优到最劣排序。
get_state
方法Tuner.get_state()
返回此对象的当前状态。
此方法在 save
期间调用。
返回值
一个字典,包含可序列化对象作为状态。
load_model
方法Tuner.load_model(trial)
从给定的试验加载模型。
对于向 Oracle
报告中间结果的模型,通常 load_model
应通过依赖 trial.best_step
来加载最佳报告的 step
。
参数
Trial
实例,对应于要加载模型的 Trial
。on_epoch_begin
方法Tuner.on_epoch_begin(trial, model, epoch, logs=None)
在一个 epoch 开始时调用。
参数
Trial
实例。Model
。on_batch_begin
方法Tuner.on_batch_begin(trial, model, batch, logs)
在一个批次开始时调用。
参数
Trial
实例。Model
。on_batch_end
方法Tuner.on_batch_end(trial, model, batch, logs=None)
在一个批次结束时调用。
参数
Trial
实例。Model
。on_epoch_end
方法Tuner.on_epoch_end(trial, model, epoch, logs=None)
在一个 epoch 结束时调用。
参数
Trial
实例。Model
。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
参数
Trial
实例,包含运行此试验所需的信息。可以通过 trial.hyperparameters
访问超参数。search
传递的位置参数。search
传递的关键字参数。返回值
一个 History
对象(即 model.fit()
的返回值)、一个字典、一个浮点数,或包含上述类型之一的列表。
如果返回一个字典,它应该是一个要跟踪的指标的字典。键是指标名称,其中包含 objective
名称。值应该是指标值。
如果返回一个浮点数,它应该是 objective
值。
如果多次评估模型,您可以返回包含上述任一类型结果的列表。最终目标值是列表中结果的平均值。
results_summary
方法Tuner.results_summary(num_trials=10)
显示调优结果摘要。
该方法打印搜索结果摘要,包括每个试验的超参数值和评估结果。
参数
save_model
方法Tuner.save_model(trial_id, model, step=0)
为给定的试验保存模型。
参数
Trial
的 ID。Oracle
报告中间结果的模型,保存的文件对应的步骤。例如,对于 Keras 模型,这是训练的 epoch 数量。search
方法Tuner.search(*fit_args, **fit_kwargs)
执行搜索以找到最佳超参数配置。
参数
run_trial
的位置参数,例如训练数据和验证数据。run_trial
的关键字参数,例如训练数据和验证数据。search_space_summary
方法Tuner.search_space_summary(extended=False)
打印搜索空间摘要。
该方法打印搜索空间中超参数的摘要,可以在调用 search
方法之前调用。
参数
set_state
方法Tuner.set_state(state)
设置此对象的当前状态。
此方法在 reload
期间调用。
参数