« Back to top page

TPE Acquisition Visualizer

Plots the TPE acquisition for a given trial and parameter.

Abstract

This package is the TPE’s Acquisition Visualizer. It provides callback and plot functions.

APIs

Class: TPEAcquisitionVisualizer

  TPEAcquisitionVisualizer()

__call__(self, study: optuna.study.Study, trial: optuna.trial.FrozenTrial) -> None

Callback function to collect tpe sampler’s acquisition information.

Args:

  • study (optuna.study.Study): The study object.
  • trial (optuna.trial.FrozenTrial): The trial object for which the callback is called.

Returns: None

plot(self, study: optuna.study.Study, trial_number: int, param_name: str,) -> plt.Figure

Plots the TPE acquisition for a given trial and parameter.

Args:

  • study (optuna.study.Study): The study object.
  • trial_number (int): The trial number to plot.
  • param_name (str): The parameter name to plot.

Returns: plt.Figure: The matplotlib figure containing the plot.

Example

from __future__ import annotations

import matplotlib.pyplot as plt
import numpy as np
import optuna
import optunahub


module = optunahub.load_module(
    package="visualization/tpe_acquisition_visualizer",
)


def objective(trial: optuna.trial.Trial) -> float:
    x_range = (-10, 50)
    x = trial.suggest_uniform("x", x_range[0], x_range[1])
    return np.abs(x) - 10 * np.cos(1 * x) + 10


seed = 42
tpe_acquisition_visualizer = module.TPEAcquisitionVisualizer()

n_startup_trials = 10
study = optuna.create_study(
    sampler=optuna.samplers.TPESampler(
        consider_prior=True,
        prior_weight=1.0,
        consider_magic_clip=True,
        consider_endpoints=False,
        n_startup_trials=n_startup_trials,
        n_ei_candidates=24,
        seed=seed,
        multivariate=False,
        group=False,
        constant_liar=False,
    ),
    direction="minimize",
)

study.optimize(objective, n_trials=100, callbacks=[tpe_acquisition_visualizer])

param_name = "x"
for trial in study.trials:
    if trial.number < n_startup_trials:
        continue
    fig = tpe_acquisition_visualizer.plot(study, trial.number, param_name)
    fig.savefig(f"{param_name}_{trial.number}.png")
    plt.close(fig)

Example of this Plot

If you want to make an animation gif, please run the following command.

convert $(printf "x_%d.png " $(seq 10 99)) tpe_x.gif
Package
visualization/tpe_acquisition_visualizer
Author
Shuji Suzuki
License
MIT License
Verified Optuna version
  • 4.3.0
Last update
2025-05-31