Optunaの目的関数に引数を渡す方法
optunaは最適な機械学習のハイパーパラメータを探索するツールです。 以下はよくあるoptunaのサンプルです。
import optuna # 目的関数 def objective(trial): x = trial.suggest_uniform('x', -10, 10) return (x - 2) ** 2 study = optuna.create_study() study.optimize(objective, n_trials=100)
objectiveはtrial以外の引数を取りません。 ですが、他の引数を渡したい事もあります。
こういう場合はfunctools.partialを使う事で実現できます。
import optuna # 目的関数 def objective2(trial, a): x = trial.suggest_uniform('x', -10, 10) return (x - a) ** 2 objective = functools.partial(objective2, a=2) study = optuna.create_study() study.optimize(objective, n_trials=100)
なお、公式のFAQに他の方法も掲載されてます。 FAQ — Optuna 2.3.0 documentation