当我运行 Keras Tuner 搜索时,代码运行了一些时期,然后说:'INFO:tensorflow:Oracle 触发退出'。
这是什么意思?我仍然能够提取最佳超参数。是因为早停吗?我已经尝试过随机搜索和超频带。
当我运行 Keras Tuner 搜索时,代码运行了一些时期,然后说:'INFO:tensorflow:Oracle 触发退出'。
这是什么意思?我仍然能够提取最佳超参数。是因为早停吗?我已经尝试过随机搜索和超频带。
可能的原因是,目录已经创建。
尝试以下步骤:
我通过在 Tuner 中设置这两个条件解决了这个问题:
overwrite = False
max_trials
大于我使用的值,直到发生错误“Oracle 触发退出”(我正在使用kerastuner.oracles.BayesianOptimization
Oracle)尝试directory
在定义调谐器的位置添加参数,或者如果您已经添加了directory
arg,请尝试更改该 arg 的值。RandomSearch
请看以下调谐器示例中的最后一行:
tuner = RandomSearch(
tune_rnn_model,
objective='val_accuracy',
seed=SEED,
max_trials=MAX_TRIALS,
directory='**change-this-value**',
)
我相信这是因为您正在处理一个小型数据集,这会在执行随机搜索时导致大量冲突。
请尝试减少随机搜索中“最大试验”的数量,这可能会解决问题。
我在 Hyperband 搜索中遇到了同样的问题。
对我来说,通过从调谐器搜索中删除“Early Stopping”回调解决了这个问题。
我遇到了这个问题,因为我用相同的名称命名了两个超参数。
例如,在 build_model(hp) 函数中,我有:
def build_model(hp):
...
a = hp.Choice('embedding_dim', [32, 64])
b = hp.Choice('embedding_dim', [128, 256])
...
最后一点是要小心有更多的超参数组合进行试验。在我的 build_model 函数示例中,我有 4 种可能的超参数组合 (2*2),因此 max_trials <= 4。
我希望它会帮助某人。
对我来说,我通过从 build_model 函数中删除 hp = HyperParameters() 解决了这个问题。我的意思是,在构建模型函数之外初始化 hp 变量。
我发现了同样的问题,并且找到了一个非常简单的解决方案。如果您只从 keras tunner 生成的目录中删除两个文件,这将非常容易。oracle.json和其他.json文件并再次运行它会起作用。