问题标签 [gpflow]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
155 浏览

gpflow - 在 coregionalized 回归中结合 Matern 和 Periodic 内核

我正在尝试构建一个多维 GP 回归,最初有两个输出 f1(x)、f2(x)。一个输出有点随意,因此我想在这里使用一个 Matern 内核:f1'(x)=K_Matern f1(x)。另一个输出 f2(x) 显示季节性,其中幅度与 f1(x) 的值相关:f2'(x)=K_season(x) f1(x)。我一直在尝试通过将两者与 Coreg 内核组合来组成一个合适的内核:K_Matern * Coreg * K_season。由于这似乎不起作用,我想知道我的想法错误在哪里。

0 投票
1 回答
337 浏览

python - 用平均函数恢复 GPflow 模型不起作用

我一直在遵循成功保存/恢复 GPflow 模型的方法。但现在我遇到了障碍。

当我尝试使用线性均值函数恢复模型时,恢复会因错误而崩溃。

我认为问题在于 tensorflow 线性均值函数对象的命名约定。上面的“-44dbadbb-0”是随机的,每次重建模型时都会发生变化,所以如果我在保存模型时检查张量名称

我得到回报:

线性-eeb5f9f3-0/A/无约束 (DT_DOUBLE) [1,1] 线性-eeb5f9f3-0/b/无约束 (DT_DOUBLE) [1] 模型/X/dataholder (DT_DOUBLE) [15,1] 模型/Y/dataholder (DT_DOUBLE) [15,1] model/kern/kernels/0/lengthscales/unconstrained (DT_DOUBLE) [] model/kern/kernels/0/variance/unconstrained (DT_DOUBLE) [] model/kern/kernels/1/lengthscales/无约束 (DT_DOUBLE) [] 模型/内核/内核/1/方差/无约束 (DT_DOUBLE) [] 模型/似然/方差/无约束 (DT_DOUBLE) []

线性函数显然与试图恢复的模型具有不同的名称。

我试图通过在恢复之前重命名变量来解决这个问题,但这不适用于 tensorflow。我也尝试了不同的保存/恢复方法,但是我无法从模型中采样。

保存模型

恢复模型

save_path = saver.restore(tf_session, "./model.ckpt")代码因错误而崩溃:

NotFoundError(请参阅上面的回溯):在检查点中找不到 Key Linear-44dbadbb-0/A/unconstrained...

0 投票
1 回答
167 浏览

python - 解释 GPFlow 中约束参数的先验

我不确定是否要在github上提出问题,但我认为这不是一个问题,而是我缺乏理解,所以我在这里发布。

我想在 GPFlow 模型(在这种情况下为 RBF 内核)中对内核的超参数进行先验。这很容易做到——例如,我可以写:

关于核方差参数。

我不确定的是该语句对约束参数的作用,例如上面的方差。它是受约束的,并且手册中写道,还有一个不受约束的表示形式,log(exp(theta) - 1)。

我想了解的是先验放在什么位置。这个正态分布是放在无约束的表示上,还是直接放在变换后的表示上?后者会有点奇怪,因为它支持负值(也许我应该只使用具有正支持的分布?)。

谢谢!

0 投票
2 回答
356 浏览

gpflow - GPflow AdamOptimizer 问题

我想在我的 python 代码中使用 GPflow 的 AdamOptimizer。

如上一篇文章所述 gpflow 正在使用特定版本的 TensorFlow。

我按照帖子中的答案,在虚拟环境中尝试了三种不同的组合。

我仍然无法实现:

错误是:Cannot find the reference in the init.py

你对我有什么建议吗?

PS我认为这个问题不是post的重复,因为该帖子的答案对我不起作用。

0 投票
1 回答
733 浏览

gpflow - 多输入多输出GP?

我正在尝试在具有多维输入数据的 GPFlow 中实现多输出 GP。

我从GPflow 中的这个问题中看到,通过“定义多维基本内核,然后在其上应用协同区域”,可以实现多维输入。

我已经编写了以下代码,我知道同位素数据(获得所有输出)可以使用本笔记本中描述的替代方法,但在这里我需要尝试 ICM,所以让我们继续使用下面的代码。

但是,当我尝试运行以下代码时:

它返回给我类似的东西:

所以我的问题是:
-这是什么问题以及如何启用具有多维输入的多输出 GP-从这张多输出 gp 幻灯片
中, 我不太了解 gpflow 与 coregion 的工作流程,ICM 返回输出 GP从通过权重 $W$ 参数化的 GP 中采样的潜在过程 $u$ 的加法形式。但是在 gpflow笔记本演示中,我看不到任何潜在的过程,笔记本说“‘Coregion’内核对输出进行索引,并作用于增强 X 值的最后一个 ([1]) 数据维度(索引) ',这与幻灯片完全不同,我对这些不同的描述感到很困惑,对这些有什么暗示吗?

0 投票
2 回答
2904 浏览

python - 创建模型后清除python循环中的内存

我在 python 中运行一个 for 循环,其中每个循环都需要在不同的数据上创建一个模型(下面显示了一个摘录)。每次创建的模型都不会从内存中删除,从而导致每个循环变慢。

给出输出:

我知道python对其内存使用指针引用,并且当变量被重用时它不会重写内存中的某些内容。出于这个原因,我尝试了 del m,然后使用了垃圾收集器。这似乎不起作用。难道我做错了什么?m有没有一种方法可以在循环完成后完全删除存储的内容?

0 投票
0 回答
121 浏览

gpflow - 美国航班数据的 SVGP

我的问题是美国航班数据集中 SVIGP 的优化问题。我为 Hensman 2014 中提到的美国飞行数据实现了 SVGP 模型,使用诱导点数 = 100,batch_size = 1000,学习率 = 1e-5 和 maxiter = 500。

结果很奇怪,结束 ELBO 并没有增加,而且无论我如何调整学习率,它都有很大的差异

初始化

推理

结果:</h1>

结果

添加结果

一旦我添加更多迭代并使用大学习率。很高兴看到 ELBO 随着迭代次数的增加而增加。但令人困惑的是,训练和测试数据的均方根误差(均方根误差)也都增加了。你有什么建议吗?图及代码如下:

ELBO 与迭代

ELBO 与迭代

训练 RMSE 与迭代

训练 RMSE 与迭代

测试 RMSE 与迭代

测试 RMSE 与迭代

使用记录器

完整代码通过链接显示。

0 投票
1 回答
446 浏览

gpflow - 在 GPflow 中组合多个潜在 GP 的可能性

我正在尝试在 GPFlow 中实现变分异方差高斯过程回归。

我的想法是使用带有自定义构建似然的变分稀疏高斯过程模型 (gpflow.models.SVGP),它表示给定两个独立 GP fg的y的密度:

p( y | f , g ) = N(y | f , t( g ) ) 其中 t(·) 是使g为正的某种变换(当前使用tf.nn.softplus)。

为了完成这项工作,我将其设置为 2,但将以,方法仅输出形状为 (N, 1) 的张量的model.num_latent方式实现似然性。以下是我当前的实现:logpconditional_meanconditional_variance

我的疑问是如何使该方法variational_expectations与 d f d g上的双积分一起工作。我打算使用 Gauss-Hermite 求积,但我不明白如何用ndiagquad.

是不是像打电话一样简单

??

编辑:

一些 MWE,使用variational_expectations来自基类的实现Likelihood

我收到以下错误消息:

我认为这与f有关,g相互堆叠(形状 [2002] = 2*N,N = 1001),并且每个维度仅生成 Gauss-Hermite 点 (11)观察(N = 1001),否则我们将有形状 [1001, 11, 11] 或 [1001, 121=11^2]。

所有帮助表示赞赏。

0 投票
1 回答
167 浏览

gpflow - 我们如何在 GPflow 中为多输出 GP 的每个输出维度建模独立噪声?

假设我在使用同位素数据的D输出时遇到问题,我想在 gpflow 中为多输出 GP 模型(内在共区域化模型)的每个输出维度使用独立噪声,这是最常见的情况,例如:

一只忙碌的猫

我已经看到了一些在 GPflow 中使用多输出 GP 的例子,比如这个笔记本这个问题

但是,对于 gpflow 中的模型类,即使指定了产品内核(即内核 *GPR共区域化),似然方差($\Sigma$)仍然是一个数字而不是D数字。

有没有办法做到这一点?

0 投票
1 回答
304 浏览

python - GPflow分类:后验方差的解释

GPflow 网站上的多类分类教程中,稀疏变分高斯过程 (SVGP) 用于 1D 玩具示例。与所有其他 GPflow 模型的情况一样,SVGP 模型有一种方法predict_y(self, Xnew)可以返回点处保留数据的均值和方差Xnew

从教程中可以清楚地看出,解包的第一个参数是三个类别(细胞和)predict_y中的每一个的后验预测概率,如下图第二个面板中的彩色线所示。但是,作者没有详细说明可以从 中解压缩的第二个参数,即预测的方差。在回归设置中,它的解释对我来说很清楚,因为在这种情况下,后验预测分布将是高斯分布。[7][8]predict_y


但我不明白这里的解释是什么。特别是,我想知道如何使用这种度量来构建误差条,表示任何新数据点的类预测的不确定性。


我稍微修改了教程的代码,在下图中添加了一个额外的面板:第三个面板以黑色显示最大标准偏差(从 获得的方差的平方根predict_y)。这显然是衡量不确定性的好方法,最高可能值为 0.5 也可能并非巧合,但我找不到它是如何计算的以及它代表什么。

黑线:三的最高方差

此处包含所有代码的完整笔记本。