Python 如何使用optuna或hyperopt调整条件目标函数
我尝试使用optuna来调整超参数。但我的目标函数是有条件的,这会在获得最佳参数时产生问题 我只想在满足条件的情况下获得cwc,否则继续试验下一个超参数。 但我想,由于不符合条件,而且客观函数与化学武器公约有关,它给出了错误 UnboundLocalError:分配前引用的局部变量“cwc\U train”Python 如何使用optuna或hyperopt调整条件目标函数,python,optuna,Python,Optuna,我尝试使用optuna来调整超参数。但我的目标函数是有条件的,这会在获得最佳参数时产生问题 我只想在满足条件的情况下获得cwc,否则继续试验下一个超参数。 但我想,由于不符合条件,而且客观函数与化学武器公约有关,它给出了错误 UnboundLocalError:分配前引用的局部变量“cwc\U train” define objective (trial): k_dis = trial.suggest_uniform('k_dis', 0.0, 5.0) l_dis = tria
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)
定义目标(试验):
k_-dis=试验。建议统一标准('k_-dis',0.0,5.0)
l_-dis=试验。建议统一('l_-dis',0.0,5.0)
k_界=试验。建议统一标准(“k_界”,0.0,5.0)
l_界=试验。建议统一('l_界',0.0,5.0)
picp=。。。。。
pinrw=。。。。。
如果picp\U列>=0.8且pinrw\U列<0.18:
cwc\U列车=拟定的fc.cwc\U列车(预计开往列车、Y\U列车)
其他:
打印(“错误=”)
返回cwc_列车
study=optuna.create_study()
研究。优化(目标,n_试验=100)
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)
我只想在满足条件的情况下获得cwc,否则继续试验下一个超参数
在这种情况下,请提出optuna.structs.TrialPruned
,而不是返回cwc\U列车。请注意,默认采样器(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()
如果picp\U列>=0.8且pinrw\U列<0.18:
cwc\U列车=拟定的fc.cwc\U列车(预计开往列车、Y\U列车)
返回cwc_列车
raise optuna.structs.TrialPruned()
我只想在满足条件的情况下获得cwc,否则继续试验下一个超参数
在这种情况下,请提出optuna.structs.TrialPruned
,而不是返回cwc\U列车。请注意,默认采样器(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()
如果picp\U列>=0.8且pinrw\U列<0.18:
cwc\U列车=拟定的fc.cwc\U列车(预计开往列车、Y\U列车)
返回cwc_列车
raise optuna.structs.TrialPruned()