【问题标题】:gpflow matrix inversion error when doing regression进行回归时的gpflow矩阵反转错误
【发布时间】:2020-09-19 21:36:59
【问题描述】:

我正在尝试使 gpflow GP 回归示例 (https://gpflow.readthedocs.io/en/develop/notebooks/basics/regression.html) 适应我自己的数据。 我有 100 个模型运行,每个模型在一个数组中有 10 个参数:modelled_pa​​rams (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 阵列的尝试没有出现此反转错误。

对克服这一点的任何帮助表示赞赏。

谢谢, 杰里米。

【问题讨论】:

    标签: python-3.x gpflow


    【解决方案1】:

    增加似然噪声应该会有所帮助,因为这实际上会在您尝试通过 Cholesky 分解的矩阵的对角线上添加一个小值。

    如果您优化似然噪声,可能会降低它的界限,或者只是修复它。

    【讨论】:

      猜你喜欢
      • 2015-08-05
      • 1970-01-01
      • 2020-05-20
      • 2014-01-09
      • 2021-08-12
      • 2016-12-20
      • 2017-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多