问题标签 [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 - 泊松似然的 GPflow 预测均值/方差
背景:我使用 SVGP 和泊松似然(和日志/exp 链接)训练了一个模型。除了预测计数之外,我还想要一个不确定性度量。
该函数m.predict_y
提供预测均值和预测方差。对于泊松似然Likelihood.predict_mean_and_var
,它使用Gauss-Hermite 正交的默认实现。
这是计算计数的期望(即我们的目标/因变量)还是泊松参数的期望?
(i) 如果它是泊松参数的预测均值/方差,如何使用该方差来获得有意义的可信区间?
(ii) 如果它是计数的预测均值/方差,那么均值是否应该与方差相同(因为我们整合了除 y 和 y 之外的所有内容是泊松分布的)?还是我误解了预测方差的概念?
如果我正确理解代码,我们会得到泊松参数 (i) 的预测均值/方差。
在我目前的方法中,我重写predict_mean_and_var
了它,以便它使用 mcmc 方法ndiag_mc_perc
而不是 Hermite-gauss 近似,然后只返回样本的 10%/90% 百分位数。
python - 在 GPFlow 中使用自定义内核进行分类时出现 Cholesky 分解问题
我在 GPFlow 中构建了一个自定义的 Matern32 内核,以对一些计算成本很高的矩阵值进行操作,这些矩阵值包含我的数据点之间的“距离”:
此自定义内核是为二进制分类任务实现的(附加示例数据文件):
运行上述返回以下错误:
我已经尝试改变 GPFlow 设置中的抖动级别以及内核参数的初始值,但这并没有解决这个 Cholesky 分解问题。我的自定义内核适用于回归任务,所以我不确定问题出在哪里。我的数据真的很糟糕吗?(示例数据是完整数据集的一小部分 - 请参阅此处了解脚本和数据。)
我正在使用 Python 3.6、GPFlow 1.3.0 和 TensorFlow 1.13.1。任何帮助将非常感激!
python - 将已知数据矩合并到 GPFlow 拟合中
我最近一直在使用 gpflow,特别是高斯过程回归,来对我可以访问每个输入的近似矩的过程进行建模。我有一个大小为 (N,1) 的输入值 X 的向量和一个大小为 (N,1) 的响应 Y 的向量。但是,我也知道,对于每个 (x,y) 对,特定 y 值的相关方差、偏度、峰度等的近似值。
由此,我知道了一些属性,这些属性告诉我使用每个数据点的适当可能性。在最简单的情况下,我只是假设所有可能性都是高斯的,并指定每个点的方差。我通过调整以下教程创建了我的代码的最小示例:https ://nbviewer.jupyter.org/github/GPflow/GPflow/blob/develop/doc/source/notebooks/advanced/varying_noise.ipynb#Demo- 2:-分组噪声方差。
上面的代码适用于高斯似然和已知方差。检查我的真实数据,我发现它经常出现偏差,因此,我想使用非高斯可能性对其进行建模,但我不确定如何根据我所知道的情况指定这些其他可能性参数。
所以我的问题是:鉴于这种设置,到目前为止,我如何调整我的代码以在每个步骤中包含非高斯似然性,特别是根据我已知的方差、偏度、峰度等与每个步骤相关联来指定和修复它们的参数个人 y 值?
gpflow - 为什么 HMC 采样器会为需要为正的超参数返回负值?[1.0 之前的旧 GPflow 版本]
我想用边缘化的超参数构建一个 GP。
我已经看到,这可以通过本笔记本gpflow 中提供的 HMC 采样器实现
但是,当我尝试运行以下代码作为第一步时(注意这是在 gpflow 0.5 上,旧版本),返回的样本是负数,即使长度尺度和方差需要是正数(负值将是无意义的)。
输出:
我不太了解 HMC 采样的详细信息,但我希望采样的后验超参数是正的,我检查了代码,它似乎可能与 Log1pe 变换有关,尽管我自己没有弄清楚。
对此有任何提示吗?
gpflow - 如何让 GPFlow 在 Tensorflow 2 下运行?
我意识到 GPFlow 的 Tensorflow 1 -> 2 转换仍在进行中,但我想知道目前在 TF2 下使用 GPFlow 的最佳方法是什么。我希望在接下来的几周内使用它进行教学,并希望在 TF2 中工作。目前,甚至很难将两者安装在一起。我已经尝试了 TF2 RC1、GPflow master、nightlies 等的各种组合。感谢任何建议。
gpflow - 在 gpflow 槽 feed_dict 中为 predict_y 提供参数
是否可以通过字典向 m.predict_y 提供输入?类似于计算对数似然的示例中的内容:
python - 在 GPflow 2.0 中设置超参数优化范围
在 GPflow 1.0 中,如果我想在像长度尺度这样的参数上设置硬边界(即限制参数的优化范围),
将参数限制在 4 到 6 之间。
GPflow 2.0 的文档说转换由 TensorFlow Probability 的 Bijector 类处理。哪个 Bijector 类处理对参数的硬性限制,实现它的正确方法是什么?
这里提出了一个关于 GPflow 1.0的类似问题(内核的超参数;初始化和设置边界)。但是由于 GPflow 1.0 不涉及使用 Bijectors,所以我提出了一个新问题。
python - 是否可以在 TensorFlow py_function 中使用调用会话?
基本上,我想知道下面的代码是否安全。我想用来tf.py_function
调用一些 scipy 代码,我想在其中评估调用会话的操作(包括设置变量)。原因是,我想使用一些 scipy 代码来做一些在 tensorflow 中难以编码的事情,但我不想中断计算图。我至少有两个例子:一个是在图中使用 LSODE 隐式 ODE 求解器,另一个是在图中使用 scipy 的强大最小化器(我正在考虑在需要重复求解 GP 的算法中调用 py_function 包装器内的 GPFlow 优化器优化问题)。
以下代码运行并返回我所期望的(值 1)。但我不知道它是否安全。我猜如果我还要使用x
图中其他地方的值,它会给出不确定的行为。
tensorflow2.0 - 有没有办法保存 gpflow2 模型并在不同的会话中恢复?
在 gpflow1 我能够做到:
然后恢复模型
我看到有一种方法可以在 gpflow2 中检查点模型,但我不清楚如何在另一个会话中恢复检查点。
任何输入将不胜感激。
gpflow - 使用 VFE 和 SVGP 模型进行预测的顺序调用
我有一个例子,我必须按顺序调用 predict 。在这种情况下,为什么 SVGP 预测会比 SGPR 更快?对于所有稀疏模型,预测的时间复杂度是否都相同,或者我错过了什么?这是我为测试它而运行的代码: