Сохранение и извлечение параметров модели Gpflow

В настоящее время я реализую алгоритм с Gpflow с использованием GPR. Я хотел сохранить параметры после обучения GPR и загрузить модель для тестирования. Кто-нибудь знает команду?

2 ответа

У GPflow есть страница с советами и рекомендациями. Вы можете перейти по ссылке, где найдете ответ на свой вопрос. Но я собираюсь также вставить MWE здесь:

Допустим, вы хотите сохранить модель GPR, вы можете сделать это с gpflow.Saver():

kernel = gpflow.kernels.RBF(1)
x = np.random.randn(100, 1)
y = np.random.randn(100, 1)
model = gpflow.models.GPR(x, y, kernel)

filename = "/tmp/gpr.gpflow"
path = Path(filename)
if path.exists():
    path.unlink()
saver = gpflow.saver.Saver()
saver.save(filename, model)

Чтобы загрузить его обратно, вы должны использовать одно из следующих решений:

with tf.Graph().as_default() as graph, tf.Session().as_default():
    model_copy = saver.load(filename)

или если вы хотите загрузить модель в том же сеансе, где вы хранили ее ранее, вам нужно применить несколько приемов:

ctx_for_loading = gpflow.saver.SaverContext(autocompile=False)
model_copy = saver.load(filename, context=ctx_for_loading)
model_copy.clear()
model_copy.compile()

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

import h5py

def _load_model(model, load_file):
    """
    Load a model given by model path
    """

    vars = {}
    def _gather(name, obj):
        if isinstance(obj, h5py.Dataset):
            vars[name] = obj[...]

    with h5py.File(load_file) as f:
        f.visititems(_gather)

    model.assign(vars)

def _save_model(model, save_file):
    vars = model.read_trainables()
    with h5py.File(save_file) as f:
        for name, value in vars.items():
            f[name] = value
Другие вопросы по тегам