如何用optuna或hyperop调整条件目标函数

2024-06-11 10:39:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着用optuna来调整超参数。但我的目标函数是有条件的,这就产生了获取最优参数的问题。你知道吗

我想得到化学武器公约只有在条件满足,否则继续试验下一个超参数。 但我想既然条件不满足,客观函数就等于cwc,它就有误差

UnboundLocalError:赋值前引用了局部变量“cwc\u 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\u train”


Tags: 函数参数trainuniform条件bounddissuggest
1条回答
网友
1楼 · 发布于 2024-06-11 10:39:54

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

在这种情况下,请提高optuna.structs.TrialPruned而不是返回cwc\U列车。{cd2}注意,抽样的概率越低,抽样的概率越小。你知道吗

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()

相关问题 更多 >