1

我正在使用 Optuna 2.5 优化 tf.keras CNN 模型上的几个超参数。我想使用修剪,以便优化跳过超参数空间中不太有希望的角落。我正在使用这样的东西:

study0 = optuna.create_study(study_name=study_name,
                             storage=storage_name,
                             direction='minimize', 
                             sampler=TPESampler(n_startup_trials=25, multivariate=True, seed=123),
                             pruner=optuna.pruners.SuccessiveHalvingPruner(min_resource='auto',
                             reduction_factor=4, min_early_stopping_rate=0),
                             load_if_exists=True)

有时模型在 2 个 epoch 后停止,有时在 12 个 epoch 后停止,48 个等等。我想要的是确保模型在被修剪之前总是训练至少 30 个 epoch。我猜这个参数min_early_stopping_rate可能对此有一些控制,但我试图将它从 0 更改为 30,然后模型永远不会被修剪。有人能比 Optuna 文档更好地解释我吗,这些参数到底 SuccessiveHalvingPruner()是做什么的(特别是min_early_stopping_rate)?谢谢

4

1 回答 1

0

min_resource对文档的解释说

min_resource * reduction_factor ** min_early_stopping_rateTrial 在执行步骤之前永远不会被修剪。

所以,我想我们需要根据和min_resource用一个特定的数字替换 的值。reduction_factormin_early_stopping_rate

于 2021-03-18T09:06:54.417 回答