我正在尝试使 gpflow GP 回归示例(https://gpflow.readthedocs.io/en/develop/notebooks/basics/regression.html)适应我自己的数据。我有 100 个模型运行,每个模型在一个数组中有 10 个参数:modelled_params (100,10)。然后每个模型在数组中都有一个分数:area_score (100,1)。
我的代码是:
k = gpflow.kernels.Matern52(active_dims=[0]) + gpflow.kernels.Matern52(active_dims=[1]) \
+ gpflow.kernels.Matern52(active_dims=[2]) + gpflow.kernels.Matern52(active_dims=[3]) \
+ gpflow.kernels.Matern52(active_dims=[4]) + gpflow.kernels.Matern52(active_dims=[5]) \
+ gpflow.kernels.Matern52(active_dims=[6]) + gpflow.kernels.Matern52(active_dims=[7]) \
+ gpflow.kernels.Matern52(active_dims=[8]) + gpflow.kernels.Matern52(active_dims=[9])
#build and optimise model model - change method and kernel later
m = gpflow.models.GPR(data=(modelled_params,area_score), kernel=k, mean_function=None)
# for some reason get a matrix inversion problem at this stage
opt=gpflow.optimizers.Scipy()
opt_logs = opt.minimize(m.training_loss, variables=m.trainable_variables, options=dict(maxiter=1000))
这会引发以下错误: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 阵列的尝试没有出现此反转错误。
任何克服这一点的帮助表示赞赏。
谢谢,杰里米。