|
import optuna |
|
from optuna.integration import TensorBoardCallback |
|
|
|
|
|
def save_trial_callback(study, trial, trials_result_path): |
|
with open(trials_result_path, "a") as f: |
|
f.write( |
|
f"Trial {trial.number}: Value (F1 Macro): {trial.value}, Params: {trial.params}\n" |
|
) |
|
|
|
|
|
def create_optuna_study(objective, n_trials, trials_result_path, tensorboard_log_dir): |
|
study = optuna.create_study(direction="maximize") |
|
|
|
|
|
tensorboard_callback = TensorBoardCallback( |
|
dirname=tensorboard_log_dir, metric_name="F1 Macro" |
|
) |
|
|
|
|
|
callbacks = [ |
|
lambda study, trial: save_trial_callback(study, trial, trials_result_path), |
|
tensorboard_callback, |
|
] |
|
|
|
study.optimize(objective, n_trials=n_trials, callbacks=callbacks) |
|
return study |
|
|