1

我对GPR很陌生。如果您对以下问题提供一些建议,我将不胜感激:

我们可以在稀疏高斯过程中使用Matern52内核吗?

选择伪输入 (Z) 的最佳方法是什么?随机抽样是否合理?

我想提一下,当我使用 Matern52 内核时,以下错误会停止优化过程。我的代码:

k1 = gpflow.kernels.Matern52(input_dim=X_train.shape[1], ARD=True)
m = gpflow.models.SGPR(X_train, Y_train, kern=k1, Z=X_train[:50, :].copy())

InvalidArgumentError(参见上面的回溯):输入矩阵不可逆。[[节点:gradients_25/SGPR-31ceaea6-412/Cholesky_grad/MatrixTriangularSolve = MatrixTriangularSolve[T=DT_DOUBLE, adjoint=false, lower=true, _device="/job:localhost/replica:0/task:0/device:CPU: 0"](SGPR-31ceaea6-412/Cholesky, SGPR-31ceaea6-412/eye_1/MatrixDiag)]

任何帮助将不胜感激,谢谢。

4

1 回答 1

1

您是否在一小部分测试数据上进行了尝试,您可以在这里发布?没有理由 Matern52 不应该工作。随机采样诱导点应该是一个合理的初始化,尤其是在更高维度。但是,如果您最终得到一些彼此非常接近的诱导点,您可能会遇到问题(这会使 K_{zz} = cov(f(Z), f(Z)) 矩阵条件不佳,这可以解释为什么Cholesky 失败)。如果您的 X_train 尚未改组,您可能希望使用Z=X_train[np.random.permutation(len(X_train))[:50]来获取改组的索引。添加白噪声内核 kern=k1+gpflow.kernels.White() 也可能会有所帮助...

于 2018-10-02T10:41:52.527 回答