如何在 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_resource
对the documentation的解释说
A trial is never pruned until it executes min_resource * reduction_factor ** min_early_stopping_rate
steps.
因此,我想我们需要根据 reduction_factor
和 min_early_stopping_rate
.
将 min_resource
的值替换为特定数字
我正在使用 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_resource
对the documentation的解释说
A trial is never pruned until it executes
min_resource * reduction_factor ** min_early_stopping_rate
steps.
因此,我想我们需要根据 reduction_factor
和 min_early_stopping_rate
.
min_resource
的值替换为特定数字