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

使用 Optuna 进行微调时使超参数加起来为 1

如何解决使用 Optuna 进行微调时使超参数加起来为 1

我有一个看起来像这样的函数

def fine_tuning(x,y,model1,model2,model3,trial):
   pred1 = model1.predict(x)
   pred2 = model2.predict(x)
   pred3 = model3.predict(x)
   
   h1 = trial.suggest_float('h1',0.0001,1,log = True)
   h2 = trial.suggest_float('h1',log = True)
   h3 = trial.suggest_float('h1',log = True)

   pred = pred1 * h1 + pred2 * h2 + pred3 * h3

   return mean_absolute_error(y,pred)

这个函数的问题是 h1+h2+h3 != 1。我应该如何改变这个函数以使 hyperparmaters 的总和 = 1?

解决方法

基本上,您正在寻找 h1、2、3 的狄利克雷分布。以下是有关如何为 Optuna 实现该分布的指南:https://optuna.readthedocs.io/en/latest/faq.html#how-do-i-suggest-variables-which-represent-the-proportion-that-is-are-in-accordance-with-dirichlet-distribution

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