使用 Keras 调谐器搜索调谐器

Tuner search with Keras Tuner

我正在使用 Keras Tuner package.I 尝试使用此处解释的示例进行超参数调整 https://www.tensorflow.org/tutorials/keras/keras_tuner。 代码运行良好,但是当我开始编写代码时,当我第二次和第三次尝试启动时,我遇到了问题。

tuner.search(X_train, Y_train, epochs=50, validation_split=0.2, callbacks=[stop_early])

# Get the optimal hyperparameters
best_hps=tuner.get_best_hyperparameters(num_trials=1)[0]

print(f"""
The hyperparameter search is complete. The optimal number of units in the first densely-connected
layer is {best_hps.get('units')} and the optimal learning rate for the optimizer
is {best_hps.get('learning_rate')}.
""")

第二次执行代码后不启动并显示上次的结果。

INFO:tensorflow:Oracle triggered exit

The hyperparameter search is complete. The optimal number of units in the first densely-connected
layer is 128 and the optimal learning rate for the optimizer
is 0.001.

那么知道如何解决这个问题吗?

Keras Tuner 正在将检查点保存在您的 gcs 或本地目录中的一个目录中。如果以后想恢复搜索,就可以使用它。由于您之前已经完成搜索,运行 再次搜索将不会执行任何操作。 您必须先删除该目录才能重新开始搜索。

在您的示例中,在调谐器搜索之前您将拥有以下内容:

tuner = kt.Hyperband(model_builder,
                     objective='val_accuracy',
                     max_epochs=10,
                     factor=3,
                     directory='my_dir',
                     project_name='intro_to_kt')

这是要删除的目录。

下次,要在开始前自动删除,您可以将该代码更改为:

tuner = kt.Hyperband(model_builder,
                     objective='val_accuracy',
                     max_epochs=10,
                     factor=3,
                     directory='my_dir',
                     project_name='intro_to_kt',
                     # if True, overwrite above directory if search is run again - i.e. don't resume
                     overwrite = True)