在GPflow中重置内核超参数值

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

import gpflowclass WrapperClass(object):    def __init__(self, kernel):        super().__init__()        self.kernel = kernel    def fit(self, X, y):        m = gpflow.models.GPR(X, y, self.kernel) # 我需要在这里重置内核# 后续代码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 + k2f = 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.)}

谢谢,Steve


回答:

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

请注意,每次您创建新的参数化对象时 – 这适用于内核和模型,如您的fit()方法中 – 您会在tensorflow图中添加操作,如果图增长很多,可能会显著减慢图计算速度。您可能需要手动处理tf.Graph()和tf.Session(),以便为每个模型保持它们独立。(请参阅新版GPflow文档中的关于会话处理和更多技巧与窍门的笔记本。)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注