Возобновить гауссовский процесс с контрольной точки в скопте - PullRequest
0 голосов
/ 07 февраля 2020

Я хотел бы иметь возможность возобновить гауссовский процесс с контрольной точки с библиотекой скопт . После некоторых исследований я не смог найти способ сделать это.

Вот простой код, показывающий, что я хочу сделать:

import skopt


LOAD = False        # To continue the optimization from a checkpoint, I would like to be able to set True here

x = skopt.space.Real(low=-10, high=10, name='x')
y = skopt.space.Real(low=-10, high=10, name='y')
dimensions = [x, y]
x0 = [0, 0]


@skopt.utils.use_named_args(dimensions=dimensions)
def f_to_minimize(x, y):
    return (x * y) ** 2 + (x + 2) ** 2


checkpoint_callback = skopt.callbacks.CheckpointSaver(
    checkpoint_path='checkpoint.pkl',
)

saved_checkpoint = None
if LOAD:
    saved_checkpoint = skopt.load('checkpoint.pkl')     # <- How can I use this ?

search_result = skopt.optimizer.gp_minimize(
    func=f_to_minimize,
    dimensions=dimensions,
    x0=x0,
    callback=[checkpoint_callback],
    n_calls=2,
    n_random_starts=1,
)

Я хотел бы иметь возможность загрузить контрольную точку из предыдущей гауссовой оптимизации процесса и продолжайте ее, чтобы модели не приходилось изучать все заново. Есть ли способ сделать это?

1 Ответ

1 голос
/ 07 февраля 2020

Этот пример в документах skopt охватывает сохранение и использование контрольных точек - короче говоря, после загрузки объекта контрольной точки вы можете использовать его свойства x_iters и func_vals в качестве x0 и y0 ключевые аргументы для gp_minimize. Если вы не загружаете контрольную точку, вы можете указать исходное значение по умолчанию x0, а y0 - None.

...