问题标签 [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 回答
378 浏览

python-3.x - 进行回归时的gpflow矩阵反转错误

我正在尝试使 gpflow GP 回归示例(https://gpflow.readthedocs.io/en/develop/notebooks/basics/regression.html)适应我自己的数据。我有 100 个模型运行,每个模型在一个数组中有 10 个参数:modelled_pa​​rams (100,10)。然后每个模型在数组中都有一个分数:area_score (100,1)。

我的代码是:

这会引发以下错误:InvalidArgumentError:输入矩阵不可逆。[[node gradient_tape/triangular_solve/MatrixTriangularSolve(定义在site-packages/gpflow/optimizers/scipy.py:146)]] [Op:__inference__tf_eval_2362]

错误可能源于输入操作。连接到节点 gradient_tape/triangular_solve/MatrixTriangularSolve 的输入源操作:Cholesky(在 site-packages/gpflow/models/gpr.py:73 中定义)

函数调用堆栈:_tf_eval

以前对 70 x 2 阵列的尝试没有出现此反转错误。

任何克服这一点的帮助表示赞赏。

谢谢,杰里米。

0 投票
2 回答
193 浏览

tensorflow - gpflow 模型的奇怪 `pickle`/`gpflow.utilities.freeze` 行为

我一直在尝试(粗略地)gpflow SVGP在玩具数据集上训练和保存模型,很大程度上遵循这个笔记本示例

保存模型后使用pickle(我很欣赏不推荐这样做,但我不认为这是这里的主要问题),我发现了一些不寻常的,我认为是意外行为:如果我们不打电话gpflow.utilities.freeze(model),在尝试之前pickle model,那么我们得到一个错误。如果我们调用gpflow.utilities.freeze(model)(丢弃返回的冻结模型),则model可以正确腌制。

重现

最小的、可重现的例子

堆栈跟踪或错误消息

预期行为

并不是说我希望泡菜在第一个实例中起作用,因为我知道这不是tensorflow一般保存相关对象的推荐方法。但是,我当然不希望它在第一次失败但在第二次成功。从代码库来看,我不认为gpflow.utilities.freeze(model)应该是 mutating model,它似乎正在这样做。

系统信息

  • 使用 GPflow 版本 2.0.0 ... 2.0.4 进行测试
  • TensorFlow 版本:2.1.0,tensorflow_probability 0.9.0
  • Python版本:Python 3.6.9

我猜想调用freezemodel实际上是莫名其妙地转换model为“冻结”模型,然后具有“常量”属性(https://gpflow.readthedocs.io/en/master/notebooks/intro_to_gpflow2.html#TensorFlow- saved_model ) 使其能够被腌制。

对此事的任何澄清将不胜感激。

请注意,我issuegpflow github( https://github.com/GPflow/GPflow/issues/1493 ) 上发布了此问题,但决定应在此处向更广泛的 gpflow 社区广播此问题。

0 投票
0 回答
120 浏览

python - 如何使用 GPflow 从多个链中采样?

我最近开始使用 gpflow 来构建 GP 模型。我使用 Hamiltonian Monte Carlo 用一条链对后部进行采样。

我的目标是运行多个链并执行收敛诊断。

这是我为一条链设置的:

我找不到任何关于如何为多个链修改它的示例。是我能找到的最接近的例子,它做同样的事情。Initial_state 更改为具有 10 个链。要对我的示例执行相同操作,我需要更改 hmc_helper.current_state 但无法找出正确的方法。

任何建议将不胜感激。

我是堆栈溢出的新手,如果我的问题不清楚,我深表歉意。

谢谢!

0 投票
1 回答
64 浏览

regression - 使用 GPFlow 进行变量已知不确定性的回归

我正在尝试对一些一维数据进行建模,其中每个数据点都有不同的误差线。

在 GPFlow 文档中,我找到了如何在此处执行此操作的示例(已知噪声方差演示

但是,该演示似乎没有生成一个可以很好地建模数据的 GP 模型,我想知道是否有人建议改进演示中的 GP 拟合?

0 投票
1 回答
207 浏览

gpflow - 具有先验分布的长度尺度自动相关性确定

我正在尝试使用 GPflow 来安装 GP。我想对长度尺度使用自动相关性确定和先验。

我知道如何分别做:

...但我想两者都做(所以基本上每个特征的先验都是不同的 Gamma 分布)。

我尝试只使用两行代码并且没有错误,但先前似乎没有添加或更改任何内容。

我怎样才能将这两者结合起来?

编辑:我又玩了一些,我想也许没那么重要,因为在训练期间调整了长度尺度。然而,长度尺度的起点对我的模型的准确性有重大影响,并且它们从起点开始不会发生显着变化。

例如,使用 lengthscales = 10 进行初始化会得到 7 - 13 之间的优化长度,15 会得到 12-18 等。使用较小的长度刻度(例如 0.1 或 1)进行初始化会导致长度刻度更接近 10。

尽管如此,我认为如果可以为使用 ARD 的每个功能设置先验,那将是非常有价值的。如果(仅?)可能使用 MCMC 方法,我可能会进行下一步调查。

0 投票
2 回答
94 浏览

hyperparameters - GPflow 中超参数的初步猜测

我也在GPflow GitHub 上问过这个问题

m.likelihood.variance.assign(0.01)我通过使用和m.kernel.lengthscales.assign(0.3)显着影响最终优化的超参数找到了超参数的初始猜测。我想知道是否有一种方法可以得到一个好的初步猜测?例如,使用数据集进行估计。

0 投票
1 回答
153 浏览

python-3.x - 如何使用 GPflow 进行预测 - 使用简单的数据输入运行 GPC?无法在不同数据上运行示例笔记本中的代码

我尝试在笔记本上运行自生成数据的代码,以证明模型是否会进行任何分类。 https://gpflow.readthedocs.io/en/master/notebooks/basics/classification.html

所以我创建了 X 和 Y 作为输入数据。

X 和 Y 中的值被选择为二进制逻辑,X 中的负值等于 Y 中的 0。X 中的正值应归类为 Y 中的 1。

然后我创建了一个模型并对其进行了训练:

我试图将 Y 预测为具有与模型训练输入相同的 X 的类,只是想看看是否有正确的结果。

对于 Ypred,我得到输出:

对于 VARpred

我尝试更改内核,组合内核,在预测之前使用 Scipy 进行优化,更改数据,但均值和方差的输出始终相同。我期待这个数据集的 Ypred = Y。

创建这个分类模型我做错了什么?

0 投票
1 回答
149 浏览

gpflow - GPflow - 使用新数据更新模型

我已经在 GPflow 中训练了一个模型,最终我想采用这个后验分布并将其用作新实例中的先验。我查看了文档,但什么也看不到。我确实看到了以下链接,这听起来非常好,但它似乎是一个占位符并且是空的。

0 投票
2 回答
271 浏览

python - GPFlow 回归的自定义均值函数构造

我正在尝试将自定义均值函数传递给 GPflow 2.0。我有一些 (x,y,z) 数据,每个 x,y 点都有几个观察值。我想将每个 (x,y) 对的平均 z 值作为均值函数传递。我的自定义均值函数代码train_xy位于训练数据中 (x,y,z) 元组的位置(x 和 y 是输入,z 是输出)。

下面是我设置均值函数并将其传递给简单 GPR 模型的代码。



我在调用predict_f函数时遇到了问题:



看起来该错误与名为f_mean = f_mean_zero + self.mean_function(Xnew). 当我看这个的形状时,尺寸非常大。我的训练数据中有 2596 个唯一 (x,y) 对(总共 3750 行)和测试中有 1104 个唯一 (x,y) 对(总共 1250 行)。 f_mean_zero是 (1250, 2596),而self.mean_function(Xnew)返回均值的一维张量(如预期的那样)。我不了解 的维度f_mean_zero,特别是因为我的测试数据中的 (x,y) 对在我的训练数据中。这似乎与这张票类似的问题,但没有解决方案。谢谢!

0 投票
1 回答
271 浏览

python - 如何为被约束为正的观察建立高斯过程回归模型

我目前正在尝试在 GPflow 中训练一个 GP 回归模型,该模型将根据一些气象输入预测降水值。我正在使用Linear+RBF+WhiteNoise内核,考虑到我正在使用的一组预测器,这似乎是合适的。

我目前的问题是,当我让模型预测新值时,它倾向于预测降水 - 见附图。

构建模型时如何“强制”物理约束?训练数据不包含任何负降水值,但它确实包含许多接近零的值,我认为这意味着GPR模型没有很好地学习“降水必须> = 0”约束。

如果有一种明确执行这样的约束的方法,那将是完美的,但我不确定它是如何工作的。这需要不同的优化算法吗?或者是否有可能以某种方式将此约束构建到内核结构中?

在此处输入图像描述