我有两个关于 Keras Tuner Hyperband 类的问题(回归问题)
tuner = kerastuner.tuners.hyperband.Hyperband(hypermodel,
objective,
max_epochs,
factor=3,
hyperband_iterations=1,
seed=None,
hyperparameters=None,
tune_new_entries=True,
allow_new_entries=True,
**kwargs)
https://keras-team.github.io/keras-tuner/documentation/tuners/#hyperband-class
与 BayesianOptimization 和 RandomSearch 不同,Tuner Hyperband(和 Sklearn)没有参数“max_Trials”。定义它们的最佳方式是什么?该文档提到了所有试验中的最大 N*(log(N)/log(f))^2 累积纪元(N=max_epochs,f=3 默认值),考虑到我通常需要 max_epochs > 10000,这似乎非常高良好的训练运行。我想限制 Keras Tuner 的计算时间,例如大约一天。有没有比按 ctrl+c 取消来自动开始训练更好的方法?
当我开始使用
进行调音时tuner.search(
x=trainX,
y=trainY,
validation_split=0.1,
batch_size=batch_size,
callbacks=[stop_early],
epochs=max_epochs_search)
可以传递纪元数的另一个参数。 “search()”的“epochs”和“Hyperband()”的“max_epochs”之间有什么关系?它们或公式 N*(log(N)/log(f))^2 似乎都不适合总纪元数。
我在其他地方找不到太多信息。读完这篇论文后,我还不清楚这一点。欢迎任何提示。谢谢!
关于你的第二个问题:
根据this,它似乎仍然是一个悬而未决的问题,并且看起来 search() 方法的 'epochs' 参数是多余的。
这来自keras官方文档: https://keras.io/keras_tuner/api/tuners/hyperband/
keras_tuner.Hyperband(
hypermodel=None,
objective=None,
max_epochs=100,
factor=3,
hyperband_iterations=1,
seed=None,
hyperparameters=None,
tune_new_entries=True,
allow_new_entries=True,
max_retries_per_trial=0,
max_consecutive_failed_trials=3,
**kwargs
)
尽管 max_Trials 不能作为 hyperband 中的参数显式传递,但 max_epochs、factor 和 hyperband_iterations 会影响调谐器运行的试验数量。尝试调整这 3 个参数。