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

问题描述

假设我有一个训练有素的模型

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...