Возобновить гауссовский процесс с контрольной точки в скопте
Я хотел бы иметь возможность возобновить гауссовский процесс с контрольной точки с помощью библиотеки 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,
)
Я хотел бы иметь возможность загрузить контрольную точку из предыдущей оптимизации гауссовского процесса и продолжить ее, чтобы модели не приходилось снова изучать все с нуля. Как это сделать?
1 ответ
Этот пример в документации skopt охватывает сохранение и использование контрольных точек - короче говоря, после загрузки объекта контрольной точки вы можете использовать егоx_iters
а также func_vals
свойства как x0
а также y0
аргументы ключевого слова для gp_minimize
. Если вы не загружаете контрольно-пропускной пункт, вы можете позволитьx0
быть вашим исходным значением по умолчанию и y0
быть None
.