如何在 Optuna SuccessiveHalvingPruner() 中设置最小 epoch 数?

How to set a minimum number of epoch in Optuna SuccessiveHalvingPruner()?

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

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 个 epoch 后停止,依此类推。我想要的是确保模型在被修剪之前始终训练至少 30 个 epoch。我想参数 min_early_stopping_rate 可能对此有一些控制,但我试图将它从 0 更改为 30,然后模型永远不会被修剪。有人能比 Optuna 文档更详细地解释一下 SuccessiveHalvingPruner() 中的这些参数的真正作用(特别是 min_early_stopping_rate)吗? 谢谢

min_resourcethe documentation的解释说

A trial is never pruned until it executes min_resource * reduction_factor ** min_early_stopping_rate steps.

因此,我想我们需要根据 reduction_factormin_early_stopping_rate.

min_resource 的值替换为特定数字