1

我使用 GPy 库构建并优化了稀疏高斯过程回归模型。文档建议按如下方式保存模型:

要保存模型,最好将它的 m.param_array 保存到磁盘(使用 numpy 的 np.save)。此外,您保存创建模型的脚本。

我能够保存模型的参数并从中重新创建模型。但是,我需要提前知道用于构建模型的内核架构(在下面的函数create_kernel中定义)。要创建和保存模型,我执行以下操作:

def create_kernel():
    # This function could change
    return GPy.kern.RBF(4,ARD=True) + GPy.kern.White(4)

gp = GPy.models.SparseGPRegression(X, y, 
                                   num_inducing=100,
                                   kernel=create_kernel())

# optimization steps
# ...

# Save the model parameters
np.save('gp_params.npy',gp.param_array)
np.save('gp_y.npy',y)
np.save('gp_X.npy',X_gpr)

要加载模型,我目前正在执行以下操作。问题是我可能无法访问该create_kernel功能。

# Load model
y_load = np.load('gp_y.npy')
X_load = np.load('gp_X.npy')
gp_load = GPy.models.SparseGPRegression(X_load, y_load, 
                                   initialize=False,
                                   num_inducing=100,
                                   kernel=create_kernel()) # Kernel is problematic here

gp_load.update_model(False)
gp_load.initialize_parameter()
gp_load[:] = np.load('gp_params.npy')
gp_load.update_model(True)

存储内核以备后用的最佳方式是什么?内核的参数和诱导输入存储在gp_params.npy文件中,但不存储内核的结构。目前,我必须知道使用哪个函数来创建模型,但情况并非总是如此。

非常感谢你的帮助!

4

0 回答 0