微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何在 Optuna SuccessiveHalvingPruner() 中设置最小纪元数?

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

解决方法

min_resourcethe documentation 的解释说

试验在执行 min_resource * reduction_factor ** min_early_stopping_rate 步之前永远不会被修剪。

因此,我想我们需要根据 min_resourcereduction_factor 用特定数字替换 min_early_stopping_rate 的值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。