问题标签 [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.
python-3.x - 进行回归时的gpflow矩阵反转错误
我正在尝试使 gpflow GP 回归示例(https://gpflow.readthedocs.io/en/develop/notebooks/basics/regression.html)适应我自己的数据。我有 100 个模型运行,每个模型在一个数组中有 10 个参数:modelled_params (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 阵列的尝试没有出现此反转错误。
任何克服这一点的帮助表示赞赏。
谢谢,杰里米。
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
我猜想调用freeze
它model
实际上是莫名其妙地转换model
为“冻结”模型,然后具有“常量”属性(https://gpflow.readthedocs.io/en/master/notebooks/intro_to_gpflow2.html#TensorFlow- saved_model ) 使其能够被腌制。
对此事的任何澄清将不胜感激。
请注意,我issue
在gpflow
github
( https://github.com/GPflow/GPflow/issues/1493 ) 上发布了此问题,但决定应在此处向更广泛的 gpflow 社区广播此问题。
python - 如何使用 GPflow 从多个链中采样?
我最近开始使用 gpflow 来构建 GP 模型。我使用 Hamiltonian Monte Carlo 用一条链对后部进行采样。
我的目标是运行多个链并执行收敛诊断。
这是我为一条链设置的:
我找不到任何关于如何为多个链修改它的示例。这是我能找到的最接近的例子,它做同样的事情。Initial_state 更改为具有 10 个链。要对我的示例执行相同操作,我需要更改 hmc_helper.current_state 但无法找出正确的方法。
任何建议将不胜感激。
我是堆栈溢出的新手,如果我的问题不清楚,我深表歉意。
谢谢!
regression - 使用 GPFlow 进行变量已知不确定性的回归
我正在尝试对一些一维数据进行建模,其中每个数据点都有不同的误差线。
在 GPFlow 文档中,我找到了如何在此处执行此操作的示例(已知噪声方差演示)
但是,该演示似乎没有生成一个可以很好地建模数据的 GP 模型,我想知道是否有人建议改进演示中的 GP 拟合?
gpflow - 具有先验分布的长度尺度自动相关性确定
我正在尝试使用 GPflow 来安装 GP。我想对长度尺度使用自动相关性确定和先验。
我知道如何分别做:
和
...但我想两者都做(所以基本上每个特征的先验都是不同的 Gamma 分布)。
我尝试只使用两行代码并且没有错误,但先前似乎没有添加或更改任何内容。
我怎样才能将这两者结合起来?
编辑:我又玩了一些,我想也许没那么重要,因为在训练期间调整了长度尺度。然而,长度尺度的起点对我的模型的准确性有重大影响,并且它们从起点开始不会发生显着变化。
例如,使用 lengthscales = 10 进行初始化会得到 7 - 13 之间的优化长度,15 会得到 12-18 等。使用较小的长度刻度(例如 0.1 或 1)进行初始化会导致长度刻度更接近 10。
尽管如此,我认为如果可以为使用 ARD 的每个功能设置先验,那将是非常有价值的。如果(仅?)可能使用 MCMC 方法,我可能会进行下一步调查。
hyperparameters - GPflow 中超参数的初步猜测
m.likelihood.variance.assign(0.01)
我通过使用和m.kernel.lengthscales.assign(0.3)
显着影响最终优化的超参数找到了超参数的初始猜测。我想知道是否有一种方法可以得到一个好的初步猜测?例如,使用数据集进行估计。
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。
创建这个分类模型我做错了什么?
gpflow - GPflow - 使用新数据更新模型
我已经在 GPflow 中训练了一个模型,最终我想采用这个后验分布并将其用作新实例中的先验。我查看了文档,但什么也看不到。我确实看到了以下链接,这听起来非常好,但它似乎是一个占位符并且是空的。
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) 对在我的训练数据中。这似乎与这张票类似的问题,但没有解决方案。谢谢!