从 skopt 中的检查点恢复高斯过程

Resume gaussian process from checkpoint in skopt

我希望能够使用库 skopt 从检查点恢复高斯过程。经过一些研究,我找不到这样做的方法。

这是一个简单的代码来展示我想要做什么:

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,
)

我希望能够从之前的高斯过程优化加载检查点并继续它,这样模型就不必再次从头开始学习所有内容。有办法吗?

skopt 文档中的

This example 介绍了保存和使用检查点 — 简而言之,加载检查点对象后,您可以使用其 x_itersfunc_vals 属性作为 x0y0 关键字参数到 gp_minimize。如果你没有加载检查点,你可以让 x0 成为你的初始默认值,而 y0 成为 None.