From afba8d5c5e4b8742f5f28af4963bab021810f4fa Mon Sep 17 00:00:00 2001 From: Alan Saul Date: Fri, 28 Aug 2015 10:07:19 +0300 Subject: [PATCH] Made sparse gp work again --- GPy/models/bayesian_gplvm_minibatch.py | 2 ++ GPy/models/sparse_gp_minibatch.py | 18 ++++++++++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/GPy/models/bayesian_gplvm_minibatch.py b/GPy/models/bayesian_gplvm_minibatch.py index b7e0c9b2..5058f17b 100644 --- a/GPy/models/bayesian_gplvm_minibatch.py +++ b/GPy/models/bayesian_gplvm_minibatch.py @@ -123,6 +123,8 @@ class BayesianGPLVMMiniBatch(SparseGPMiniBatch): def _outer_init_full_values(self): full_values = super(BayesianGPLVMMiniBatch, self)._outer_init_full_values() + full_values['dL_dpsi0'] = np.zeros(self.X.shape[0]) + full_values['dL_dpsi1'] = np.zeros((self.X.shape[0], self.Z.shape[0])) return full_values def parameters_changed(self): diff --git a/GPy/models/sparse_gp_minibatch.py b/GPy/models/sparse_gp_minibatch.py index eab8d8f3..3065b260 100644 --- a/GPy/models/sparse_gp_minibatch.py +++ b/GPy/models/sparse_gp_minibatch.py @@ -214,8 +214,8 @@ class SparseGPMiniBatch(SparseGP): to initialize the gradients for the mean and the variance in order to have the full gradient for indexing) """ - return {'dL_dpsi0': np.zeros(self.X.shape[0]), - 'dL_dpsi1': np.zeros((self.X.shape[0], self.Z.shape[0]))} + return {'dL_dKdiag': np.zeros(self.X.shape[0]), + 'dL_dKnm': np.zeros((self.X.shape[0], self.Z.shape[0]))} def _outer_loop_for_missing_data(self): Lm = None @@ -243,10 +243,8 @@ class SparseGPMiniBatch(SparseGP): psi1 = self.kern.psi1(self.Z, self.X) psi2 = self.kern.psi2(self.Z, self.X) else: - if psi0 is None: - psi0 = kern.Kdiag(X) - if psi1 is None: - psi1 = kern.K(X, Z) + psi0 = self.kern.Kdiag(self.X) + psi1 = self.kern.K(self.X, self.Z) psi2 = None self.psi0 = psi0 @@ -261,8 +259,12 @@ class SparseGPMiniBatch(SparseGP): psi0ni = psi0[ninan] psi1ni = psi1[ninan] - psi2ni = psi2[ninan] - value_indices = dict(outputs=d, samples=ninan, dL_dpsi0=ninan, dL_dpsi1=ninan) + if self.has_uncertain_inputs(): + psi2ni = psi2[ninan] + value_indices = dict(outputs=d, samples=ninan, dL_dpsi0=ninan, dL_dpsi1=ninan) + else: + psi2ni = None + value_indices = dict(outputs=d, samples=ninan, dL_dKdiag=ninan, dL_dKnm=ninan) posterior, log_marginal_likelihood, grad_dict = self._inner_parameters_changed( self.kern, self.X[ninan],