gpt4 book ai didi

python - 如何使用 optuna 或 hyperopt 调整条件目标函数

转载 作者:太空宇宙 更新时间:2023-11-03 20:34:38 25 4
gpt4 key购买 nike

我尝试使用 optuna 来调整超参数。但我的目标函数是有条件的,这会在获得最佳参数方面产生问题。

只有满足条件时我才想获得 cwc,否则继续尝试下一个超参数。但我猜由于条件不满足并且目标函数返回 cwc 它会给出错误

UnboundLocalError:赋值前引用了局部变量“cwc_train”

define objective (trial):
k_dis = trial.suggest_uniform('k_dis', 0.0, 5.0)
l_dis = trial.suggest_uniform('l_dis', 0.0, 5.0)
k_bound = trial.suggest_uniform('k_bound', 0.0, 5.0)
l_bound = trial.suggest_uniform('l_bound', 0.0, 5.0)

picp = .....
pinrw = .....


if picp_train >= 0.8 and pinrw_train < 0.18:
cwc_train = fc.CWC_proposed(predict_bound_train, Y_train)
else:
print("error = ")
return cwc_train
study = optuna.create_study()
study.optimize(objective, n_trials=100)

UnboundLocalError:赋值前引用了局部变量“cwc_train”

最佳答案

i want to get cwc only if the condtion is met otherwise continue trial for next hyperparameters.

在这种情况下,请引发 optuna.structs.TrialPruned 而不是返回 cwc_train。请注意,默认采样器 (TPESampler) 能够识别修剪后的解决方案,因此可以降低重新采样的概率。

if picp_train >= 0.8 and pinrw_train < 0.18: 
cwc_train = fc.CWC_proposed(predict_bound_train, Y_train)
return cwc_train
raise optuna.structs.TrialPruned()

关于python - 如何使用 optuna 或 hyperopt 调整条件目标函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57246939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com