当我运行Keras Tuner搜索时,代码运行了一些epochs然后显示'INFO:tensorflow:Oracle triggered exit'。这是什么意思?我仍然能够提取最佳超参数。这是由于早期停止吗?我已经尝试过随机搜索和hyperband。
你可以用以下方法解决:
tuner = RandomSearch(
tune_rnn_model,
objective='val_accuracy',
seed=SEED,
overwrite=True,
max_trials=MAX_TRIALS,
directory='project')
要开始新的搜索并忽略之前的结果,我们设置 overwrite=True
。或者,您可以使用以下代码删除目录文件夹:
!rm -r <directory folder>
可能的原因是目录已经创建。
尝试按照以下步骤进行:
我通过在我的调谐器中设置以下两个条件来解决此问题:
overwrite = False
max_trials
值更大的Oracle值,直到出现错误“Oracle触发退出”(我正在使用kerastuner.oracles.BayesianOptimization
Oracle)directory
参数,如果您已经添加了directory
参数,请尝试更改该参数的值。请注意下面RandomSearch
调试器示例中的最后一行。tuner = RandomSearch(
tune_rnn_model,
objective='val_accuracy',
seed=SEED,
max_trials=MAX_TRIALS,
directory='**change-this-value**',
)
我遇到了这个问题,因为我给两个超参数取了相同的名称。
例如,在 build_model(hp) 函数中,我有:
def build_model(hp):
...
a = hp.Choice('embedding_dim', [32, 64])
b = hp.Choice('embedding_dim', [128, 256])
...
我曾经有同样的问题,但没有找到我想要的答案。
如果调谐器在试验中完成,低于您的max_trial参数,最可能的原因是调谐器已经尝试了您之前设置的超参数领域的所有可能组合。
例如:我有2个参数供调谐器尝试,第一个可以获得8个值,第二个可以获得18个值。如果将这两个数字相乘,就会得到144个组合,这正好是调谐器停止的试验次数。
我在Hyperband搜索中遇到了同样的问题。
对我来说,问题是通过从调谐器搜索中删除“提前停止”回调来解决的。
我认为这是因为你正在处理一个小数据集,导致在执行随机搜索时发生了大量的碰撞。
请尝试减少随机搜索中的“max-trials”数量,这可能会解决问题。