问题标签 [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 - Gaussian progress regression: wrong prediction
my input consists of x
and y
of lenth 10. I want to Train my GP so that it can predict the corresponding z
. But somehow after Training, the predicted z
value is way different than it should be. So far, I have tried different kernels with different lengthscales, but the prediction is still too much different. I would be very greatful for any tips and advices.
Plot of the dataset used for Training (Blue) and the predicted value (Black).
GP model paramters before and after Training:
gpflow - GPFlow-2.0 - default_float 和似然方差问题
我正在尝试将 gpflow (2.0rc) 与 float64 一起使用,并且一直在努力让即使是简单的示例也能正常工作。我使用以下方式配置 gpflow:
我正在使用 GPR:
事实上,如果我打印一个摘要,两个参数都有 dtype float64。但是,如果我尝试使用此模型进行预测,则会出现错误。
调试会话将我带到 gpr.py 中的以下行(第 88 行)
这将创建一个 dtype 为 float32 的矩阵,从而导致如上所述的爆炸。所以问题似乎与我设置可能性方差的方式有关?
这是演示该问题的完整 Python 脚本:
gpflow - 使用 GPflow 进行多维高斯过程回归
我想使用 GPflow 中使用版本 2 实现的高斯过程回归执行一些多元回归。安装pip install gpflow==2.0.0rc1
下面是一些示例代码,它生成一些 2D 数据,然后尝试使用 GPR 对其进行拟合,最后计算真实输入数据和 GPR 预测之间的差异。
最终,我想扩展到更高的维度并针对验证集进行测试以检查过度拟合并尝试使用其他内核和“自动相关性确定”,但了解如何使其工作是第一步。
谢谢!
以下代码片段将在 jupyter notebook 中运行。
tensorflow - gpflow 2 中的优化:为什么设置 autograph=False?
在当前的笔记本教程(gpflow 2.0)中,所有@tf.function 标签都包含选项 autograph=False,例如(https://gpflow.readthedocs.io/en/2.0.0-rc1/notebooks/advanced/gps_for_big_data.html ):
有谁知道为什么会这样,或者这背后的原因是什么?据我了解,autograph=True
只是允许将 python 控制流转换为图形结构。即使不需要该功能,将其设置/保留为 true 是否有任何缺点?
我的猜测是,它在图形的编译时只是一个很小的开销,但应该可以忽略不计。那是错的吗?
谢谢
gpflow - GPy 和 GPflow 数学背景 - 参考资料
GPy 和 GPflow 是否具有共同的数学背景?我问这个是因为我正在使用 GPy 但我看不到参考资料。但是,GPflow 在其示例中提供了参考。
使用继续使用 GPy 是否可以,或者您是否建议立即使用 GPflow 用于高斯过程?
python - 高斯过程回归:将输入映射到时间序列
首先,我想描述一下我想要实现的目标:我的输入 X 由 2 个值组成,输出 Y 由 2 个不同长度的列表组成:
在大多数情况下,回归问题将输入 x 映射到单个输出 y。但是在我的情况下,我需要将输入 x 映射到时间序列 y。我正在尝试使用 gpflow 在 python 中实现这一点。想听听大家的意见,这个案例选择GPR是否合适,如果有人做过类似的工作,可以介绍一下吗?
tensorflow - gpflow model prediction says input was expected to be a double tensor but is a float tensor
I am trying to run the code from the gpflow tutorial: https://gpflow.readthedocs.io/en/stable/notebooks/regression.html However, it doesn't work.
The following code:
returns the following error:
InvalidArgumentError: cannot compute AddV2 as input #1(zero-based) was expected to be a double tensor but is a float tensor [Op:AddV2] name: add/
I have windows 10, python 3.6, tensorflow 2.0, tensorflow probability 0.9, and gpflow was installed with pip install -e . command on 21st of february 2020.
Could you help me with this? I do transform the input to double so I think it could be that gpflow updated the code but not the tutorial.
python - gpflow model.elbo 抛出 KeyError 和 NotImplementedError
我试图在 gpflow 中训练一个 SVGP 模型,其中 X_train 的形状为 (140,1433),y_train 的形状为 (140,)。我从 dispatcher.py 得到一个 KeyError 但错误消息没有指定我的代码的哪一部分调用了该文件,我也无法弄清楚错误消息的其余部分是什么意思。我复制完整的相关代码和完整的错误消息:
我收到以下错误消息:
KeyError Traceback (最近一次调用最后一次) ~\Anaconda3\envs\tf_gpf_env\lib\site-packages\multipledispatch\dispatcher.py in call (self, *args, **kwargs) 268 try: --> 269 func = self. _cache[types] 270 除了 KeyError:
键错误:(,,,)
在处理上述异常的过程中,又出现了一个异常:
NotImplementedError Traceback(最近一次调用最后一次)在 1 中的 epoch 在范围(200):----> 2 elbo = -training_step(X_train,y_train,优化器,gprocess)3 elbo = elbo.numpy() 4 5 acc = 评估(idx_test, node_labels[idx_test], gprocess)
在 training_step(X_train, y_train, optimizer, gprocess) 15 tape.watch(gprocess.trainable_variables) 16 data=(X_train, y_train) ---> 17 Objective = -gprocess.elbo(data) 18 19 #objective = -gprocess。 elbo(X_train, y_train)
c:\users\asus\downloads\gpflow-develop\gpflow-develop\gpflow\models\svgp.py in elbo(self, data) 152 这将返回对数边际似然的证据下限 (ELBO)。153 """ --> 154 return self.log_marginal_likelihood(data) 155 156 def predict_f(self, Xnew: tf.Tensor, full_cov=False, full_output_cov=False) -> tf.Tensor:
c:\users\asus\downloads\gpflow-develop\gpflow-develop\gpflow\models\model.py in log_marginal_likelihood(self, *args, **kwargs) 43 44 def log_marginal_likelihood(self, *args, **kwargs) -> tf.Tensor: ---> 45 return self.log_likelihood(*args, **kwargs) + self.log_prior() 46 47 def log_prior(self) -> tf.Tensor:
c:\users\asus\downloads\gpflow-develop\gpflow-develop\gpflow\models\svgp.py in log_likelihood(self, data) 138 X, Y = data 139 kl = self.prior_kl() --> 140 f_mean , f_var = self.predict_f(X, full_cov=False, full_output_cov=False) 141 var_exp = self.likelihood.variational_expectations(f_mean, f_var, Y) 142 如果 self.num_data 不是 None:
c:\users\asus\downloads\gpflow-develop\gpflow-develop\gpflow\models\svgp.py in predict_f(self, Xnew, full_cov, full_output_cov) 164 full_cov=full_cov, 165 white=self.whiten, --> 166 full_output_cov=full_output_cov) 167 # tf.debugging.assert_positive(var) # 我们真的应该让测试在这里通过 168 return mu + self.mean_function(Xnew), var
~\Anaconda3\envs\tf_gpf_env\lib\site-packages\multipledispatch\dispatcher.py in call (self, *args, **kwargs) 276 self._cache[types] = func 277 try: --> 278 return func( *args, **kwargs) 279 280 MDNotImplementedError 除外:
c:\users\asus\downloads\gpflow-develop\gpflow-develop\gpflow\conditionals\conditionals.py in _conditional(Xnew, inducing_variable, kernel, function, full_cov, full_output_cov, q_sqrt, white) 54 """ 55 Kmm = Kuu(inducing_variable, kernel, jitter=default_jitter()) # [M, M] ---> 56 Kmn = Kuf(inducing_variable, kernel, Xnew) # [M, N] 57 Knn = kernel(Xnew, full=full_cov) 58 fmean, fvar = base_conditional(Kmn,
~\Anaconda3\envs\tf_gpf_env\lib\site-packages\multipledispatch\dispatcher.py in call (self, *args, **kwargs) 273 raise NotImplementedError( 274 'Could not find signature for %s: <%s>' % --> 275 (self.name, str_signature(types))) 276 self._cache[types] = func 277 尝试:
NotImplementedError:找不到 Kuf 的签名:
gpflow - SVGP 和 SGPMC 实现的区别
就 SGPMC 论文 [1] 而言,预训练应该与 SVGP 几乎相同。q_sqrt=None
但是,实现(当前开发版本)略有不同,由于调度编程风格,我在理解所有内容时遇到了一些问题(尤其是条件句 with 会发生什么)。
我是否正确地看到它,不同之处在于q_mu
/q_var
现在由该self.V
正态分布表示?唯一的其他变化是默认情况下启用白化,因为它是采样所必需的?
奇怪的是,SPGMC 的随机优化(还没有任何采样)在我的特定数据上似乎比 SVGP 类工作得更好,这让我有点困惑,因为它应该基本上是相同的。
[1]亨斯曼、詹姆斯等人。“用于变分稀疏高斯过程的 MCMC。” 神经信息处理系统的进展。2015 年。
Edit2:在当前的开发分支中,我看到(负)training_objective 基本上包括:
VariationalExp + self.log_prior_density()
,而 SVGP ELBO 是VariationalExp - KL(q(u)|p(u))
。
self.log_prior_density()
显然增加了所有先前的密度。所以训练目标看起来像 SGPMC 论文的方程(7)(白化的最优变分分布)。
因此,通过优化后验的最优变分近似p(f*,f, u, θ | y)
,我们将得到诱导点的 MAP 估计?