如何将参数从一个 gpflow 模型转移到另一个模型以获得相似的结果?

How can I transfer parameters from one gpflow model to another to gain similar results?

假设我有一个经过训练的模型

m = gpflow.models.SVGP(
     likelihood=likelihood, kernel=kernel, inducing_variable=Z, num_data = len(X_train)
)

是否可以将其参数转移到另一个模型并获得类似的结果?例如

model = gpflow.models.SVGP(kernel=m.kernel,
                           likelihood=m.likelihood,
                           inducing_variable=m.inducing_variable,
                           num_data=m.num_data)

但是这个例子失败了,因为 model 结果很差。是否还有其他一些参数,应该加在签名中,或者原则上是不可能的?

是的,SVGP(以及 VGP)模型预测关键取决于由 model.q_mumodel.q_sqrt 参数化的 q(u) 分布。您可以使用

传输所有参数(包括这两个参数)
params = gpflow.utilities.parameter_dict(model)
gpflow.utilities.multiple_assign(model, params)

(有关更多上下文,请参阅 this notebook