【问题标题】:Reload Keras-Tuner Trials from the directory从目录重新加载 Keras-Tuner Trials
【发布时间】:2021-05-12 03:21:51
【问题描述】:

在完成Tuner 的搜索以检查结果后,我正在尝试重新加载或访问 Keras-Tuner Trials。我找不到与此问题相关的任何文档或答案。

例如,我设置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)])

我看到这会在目录kt_dir 中创建试验文件,项目名称为lstm_dense_bo,如下所示:

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

非常感谢您的帮助。谢谢

【问题讨论】:

    标签: tensorflow keras tensorflow2.0 tf.keras keras-tuner


    【解决方案1】:

    使用

    tuner = kt.BayesianOptimization(build_model,
                             objective='val_categorical_accuracy',
                             max_trials=10,
                             directory='kt_dir',
                             project_name='lstm_dense_bo')
    

    将再次加载调谐器。

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    【解决方案2】:

    我试图做同样的事情。我正在研究 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="min"),
        executions_per_trial=1,
        overwrite=False,
        directory=workdir,
        project_name="keras_tuner",
    )
    
    1. 查找您要加载的试用版。请注意,TensorBoard 对此非常有效。在此示例中,我正在加载 1a38ebaba07b77501999cb1c4ab9413e

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

    tuner.oracle.get_trial('1a38ebaba07b77501999cb1c4ab9413e')

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

    tuner.hypermodel.build(trial.hyperparameters)

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

    注意这似乎令人费解和hacky,希望看到更好的方法。

    【讨论】:

      猜你喜欢
      • 2021-04-26
      • 2020-09-23
      • 1970-01-01
      • 2021-08-16
      • 2021-05-23
      • 1970-01-01
      • 1970-01-01
      • 2020-04-05
      • 1970-01-01
      相关资源
      最近更新 更多