簡體   English   中英

如何使用optuna或hyperopt調整條件目標函數

[英]How to tune conditional objective function using optuna or hyperopt

我嘗試使用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”

我只想在滿足條件的情況下獲得CWC,否則請繼續嘗試下一個超參數。

在這種情況下,請引發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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM