从目录重新加载 Keras-Tuner Trials

Kri*_*lal 6 keras tensorflow tf.keras tensorflow2.0 keras-tuner

我正在尝试在之后重新加载或访问Keras-Tuner TrialsTuner以检查结果。我无法找到与此问题相关的任何文档或答案。

例如,我设置BayesianOptimization搜索最佳超参数如下:

## Build Hyper Parameter Search
tuner = kt.BayesianOptimization(build_model,
                     objective='val_categorical_accuracy',
                     max_trials=10,
                     directory='kt_dir',
                     project_name='lstm_dense_bo')

tuner.search((X_train_seq, X_train_num), y_train_cat,
             epochs=30,
             batch_size=64,
             validation_data=((X_val_seq, X_val_num), y_val_cat),
             callbacks=[callbacks.EarlyStopping(monitor='val_loss', patience=3, 
                                                restore_best_weights=True)])
Run Code Online (Sandbox Code Playgroud)

kt_dir我看到这会在项目名称的目录中创建试用文件,lstm_dense_bo如下所示: 调谐器对象

现在,如果我重新启动 Jupyter 内核,如何将这些试验重新加载到Tuner对象中,然后检查最佳模型或最佳超参数或最佳试验?

我非常感谢你的帮助。谢谢

j7s*_*kov 6

我也在尝试做同样的事情。我正在研究 keras 文档以寻找比这更简单的方法,但找不到 - 所以如果任何其他 SO-ers 有更好的想法,请告诉我们!

  1. 加载以前的调谐器。请务必确保overwrite=False,否则您将删除您的试用版。
workdir = "mlp_202202151345"
obj = "val_recall"
tuner = kt.Hyperband(
    hypermodel=build_model,
    metrics=metrics,
    objective=kt.Objective(obj, direction="max"),
    executions_per_trial=1,
    overwrite=False,
    directory=workdir,
    project_name="keras_tuner",
)
Run Code Online (Sandbox Code Playgroud)
  1. 寻找您想要加载的试用版。请注意,TensorBoard对此非常有效。在此示例中,我正在加载1a38ebaba07b77501999cb1c4ab9413e. 1a38ebaba07b77501999cb1c4ab9413e

  2. 这是我在 Keras 文档中找不到的部分。这可能取决于您使用的调谐器(我使用的是Hyperband):

tuner.oracle.get_trial('1a38ebaba07b77501999cb1c4ab9413e')

返回一个Trial对象(在文档中也找不到)。该Trial对象具有超参数属性,该属性将返回该试验的超参数。现在:

tuner.hypermodel.build(trial.hyperparameters)

为您提供用于训练、评估、预测等的试验模型。

注意这看起来很复杂,很古怪,很想看到更好的方法。

  • 接得好!应该是最大。我编辑了它。 (2认同)

小智 0

使用

tuner = kt.BayesianOptimization(build_model,
                         objective='val_categorical_accuracy',
                         max_trials=10,
                         directory='kt_dir',
                         project_name='lstm_dense_bo')
Run Code Online (Sandbox Code Playgroud)

将再次加载调谐器。

  • 通过额外的支持信息可以改进您的答案。请[编辑]添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以[在帮助中心](/help/how-to-answer)找到有关如何写出好的答案的更多信息。 (3认同)