我使用 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
文件中,但不存储内核的结构。目前,我必须知道使用哪个函数来创建模型,但情况并非总是如此。
非常感谢你的帮助!