问题标签 [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.
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。由于这似乎不起作用,我想知道我的想法错误在哪里。
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...
python - 解释 GPFlow 中约束参数的先验
我不确定是否要在github上提出问题,但我认为这不是一个问题,而是我缺乏理解,所以我在这里发布。
我想在 GPFlow 模型(在这种情况下为 RBF 内核)中对内核的超参数进行先验。这很容易做到——例如,我可以写:
关于核方差参数。
我不确定的是该语句对约束参数的作用,例如上面的方差。它是受约束的,并且手册中写道,还有一个不受约束的表示形式,log(exp(theta) - 1)。
我想了解的是先验放在什么位置。这个正态分布是放在无约束的表示上,还是直接放在变换后的表示上?后者会有点奇怪,因为它支持负值(也许我应该只使用具有正支持的分布?)。
谢谢!
gpflow - 多输入多输出GP?
我正在尝试在具有多维输入数据的 GPFlow 中实现多输出 GP。
我从GPflow 中的这个问题中看到,通过“定义多维基本内核,然后在其上应用协同区域”,可以实现多维输入。
我已经编写了以下代码,我知道同位素数据(获得所有输出)可以使用本笔记本中描述的替代方法,但在这里我需要尝试 ICM,所以让我们继续使用下面的代码。
但是,当我尝试运行以下代码时:
它返回给我类似的东西:
所以我的问题是:
-这是什么问题以及如何启用具有多维输入的多输出 GP-从这张多输出 gp 幻灯片
中,
我不太了解 gpflow 与 coregion 的工作流程,ICM 返回输出 GP从通过权重 $W$ 参数化的 GP 中采样的潜在过程 $u$ 的加法形式。但是在 gpflow笔记本演示中,我看不到任何潜在的过程,笔记本说“‘Coregion’内核对输出进行索引,并作用于增强 X 值的最后一个 ([1]) 数据维度(索引) ',这与幻灯片完全不同,我对这些不同的描述感到很困惑,对这些有什么暗示吗?
python - 创建模型后清除python循环中的内存
我在 python 中运行一个 for 循环,其中每个循环都需要在不同的数据上创建一个模型(下面显示了一个摘录)。每次创建的模型都不会从内存中删除,从而导致每个循环变慢。
给出输出:
我知道python对其内存使用指针引用,并且当变量被重用时它不会重写内存中的某些内容。出于这个原因,我尝试了 del m,然后使用了垃圾收集器。这似乎不起作用。难道我做错了什么?m
有没有一种方法可以在循环完成后完全删除存储的内容?
gpflow - 美国航班数据的 SVGP
我的问题是美国航班数据集中 SVIGP 的优化问题。我为 Hensman 2014 中提到的美国飞行数据实现了 SVGP 模型,使用诱导点数 = 100,batch_size = 1000,学习率 = 1e-5 和 maxiter = 500。
结果很奇怪,结束 ELBO 并没有增加,而且无论我如何调整学习率,它都有很大的差异
初始化
推理
结果:</h1>
添加结果
一旦我添加更多迭代并使用大学习率。很高兴看到 ELBO 随着迭代次数的增加而增加。但令人困惑的是,训练和测试数据的均方根误差(均方根误差)也都增加了。你有什么建议吗?图及代码如下:
ELBO 与迭代
训练 RMSE 与迭代
测试 RMSE 与迭代
使用记录器
完整代码通过链接显示。
gpflow - 在 GPflow 中组合多个潜在 GP 的可能性
我正在尝试在 GPFlow 中实现变分异方差高斯过程回归。
我的想法是使用带有自定义构建似然的变分稀疏高斯过程模型 (gpflow.models.SVGP),它表示给定两个独立 GP f、g的y的密度:
p( y | f , g ) = N(y | f , t( g ) ) 其中 t(·) 是使g为正的某种变换(当前使用tf.nn.softplus
)。
为了完成这项工作,我将其设置为 2,但将以,方法仅输出形状为 (N, 1) 的张量的model.num_latent
方式实现似然性。以下是我当前的实现:logp
conditional_mean
conditional_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]。
所有帮助表示赞赏。
python - GPflow分类:后验方差的解释
在GPflow 网站上的多类分类教程中,稀疏变分高斯过程 (SVGP) 用于 1D 玩具示例。与所有其他 GPflow 模型的情况一样,SVGP 模型有一种方法predict_y(self, Xnew)
可以返回点处保留数据的均值和方差Xnew
。
从教程中可以清楚地看出,解包的第一个参数是三个类别(细胞和)predict_y
中的每一个的后验预测概率,如下图第二个面板中的彩色线所示。但是,作者没有详细说明可以从 中解压缩的第二个参数,即预测的方差。在回归设置中,它的解释对我来说很清楚,因为在这种情况下,后验预测分布将是高斯分布。[7]
[8]
predict_y
但我不明白这里的解释是什么。特别是,我想知道如何使用这种度量来构建误差条,表示任何新数据点的类预测的不确定性。
我稍微修改了教程的代码,在下图中添加了一个额外的面板:第三个面板以黑色显示最大标准偏差(从 获得的方差的平方根predict_y
)。这显然是衡量不确定性的好方法,最高可能值为 0.5 也可能并非巧合,但我找不到它是如何计算的以及它代表什么。
此处包含所有代码的完整笔记本。