我可以深度复制 `gpflow.models.GPModel` 吗? (GPflow2)

Can I deepcopy a `gpflow.models.GPModel`? (GPflow2)

我们已经训练了一个模型,并希望以几种不同的方法使用它,每种方法都会对其进行变异。但是,第一个方法调用会污染后续调用的模型。

理想情况下,我们只想深度复制模型,然后将副本传递给变异方法。

这可能吗?或者有更好的选择吗?

当然可以。 GPflow 2.0.0-rc1 有深拷贝的实现,但是叫deepcopy_components

Artem 的回答适用于 GPflow 2.0 的 rc1 候选版本。在最终的 2.0 版本中,函数是 gpflow.utilities.deepcopy.

您还可以使用 gpflow.utilities.freeze 获取模型的不可变*快照,其中 returns 每个 tf.Variablegpflow.Parameter 的模型都替换为 tf.Tensor.

*不可变,因为它无法训练