重置GPflow中的内核超参数值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重置GPflow中的内核超参数值相关的知识,希望对你有一定的参考价值。

我的用例是这样的:我有一个函数接受用户选择的内核然后我将迭代数据集中的每个日期并使用高斯过程回归来使用指定的内核估计模型。但是,由于我指向内核对象,我需要在运行下一次迭代之前将其重置为默认值。

import gpflow

class WrapperClass(object):
    def __init__(self, kernel):
        super().__init__()
        self.kernel = kernel

    def fit(self, X, y):
        m = gpflow.models.GPR(X, y, self.kernel) # I need to reset the kernel here

# some code later
def some_function(Xs, ys, ts, f):
    for t in ts:
        X = Xs.loc[t]    # pandas dataframe
        y = ys.loc[t]    # pandas
        f.fit(X, y)

k1 = gpflow.kernels.RBF(1)
k2 = gpflow.kernels.White(0.1)
k = k1 + k2
f = WrapperClass(k)
sume_function(Xs, ys, ts, f)

我在内核上找到了方法read_trainables(),所以一种策略是保存用户提供的设置,但似乎没有任何方法来设置它们?

In [7]: k1.read_trainables()
Out[7]: {'Sum/rbf/lengthscales': array(1.), 'Sum/rbf/variance': array(1.)}

干杯,史蒂夫

答案

您可以使用assign():k1.assign(k1.read_trainables())(或路径值对的某些其他字典)设置参数化对象(模型,内核,可能性等)的参数。不过,你可能会创建一个新的内核对象!

请注意,每次创建新的参数化对象时 - 这都适用于内核和模型,就像fit()方法一样 - 您可以向tensorflow图添加操作,如果图增长很多,这会显着减慢图计算。您可能希望手动处理tf.Graph()和tf.Session()以使它们与每个模型保持不同。 (请参阅新的GPflow文档中的session handling和更多tips and tricks上的笔记本。)

以上是关于重置GPflow中的内核超参数值的主要内容,如果未能解决你的问题,请参考以下文章

Neuraxle 中的默认超参数值

如何从片段外部清除/重置地图?

超实用的php代码片段

Python:LightGBM 超参数调整值错误

十个html5代码片段,超实用,一定要收藏

Keras 1d 卷积层如何处理词嵌入 - 文本分类问题? (过滤器、内核大小和所有超参数)