diff --git a/GPy/inference/latent_function_inference/inference_X.py b/GPy/inference/latent_function_inference/inference_X.py index c28731c3..de3c475c 100644 --- a/GPy/inference/latent_function_inference/inference_X.py +++ b/GPy/inference/latent_function_inference/inference_X.py @@ -83,8 +83,17 @@ class Inference_X(Model): X_grad = self.kern.gradients_qX_expectations(variational_posterior=self.X, Z=self.Z, dL_dpsi0=self.dL_dpsi0, dL_dpsi1=self.dL_dpsi1, dL_dpsi2=self.dL_dpsi2) self.X.set_gradients(X_grad) - self._log_marginal_likelihood -= self.variational_prior.KL_divergence(self.X) - self.variational_prior.update_gradients_KL(self.X) + from ...core.parameterization.variational import SpikeAndSlabPrior + if isinstance(self.variational_prior, SpikeAndSlabPrior): + # Update Log-likelihood + KL_div = self.variational_prior.KL_divergence(self.X, N=self.Y.shape[0]) + # update for the KL divergence + self.variational_prior.update_gradients_KL(self.X, N=self.Y.shape[0]) + else: + # Update Log-likelihood + KL_div = self.variational_prior.KL_divergence(self.X) + # update for the KL divergence + self.variational_prior.update_gradients_KL(self.X) def log_likelihood(self): return self._log_marginal_likelihood diff --git a/GPy/kern/_src/rbf.py b/GPy/kern/_src/rbf.py index 1723494f..987f7de8 100644 --- a/GPy/kern/_src/rbf.py +++ b/GPy/kern/_src/rbf.py @@ -25,6 +25,15 @@ class RBF(Stationary): self.psicomp = PSICOMP_RBF_GPU() else: self.psicomp = PSICOMP_RBF() + + def useGPU(self,flag=True): + if flag: + if isinstance(self.psicomp,PSICOMP_RBF): + self.useGPU = True + self.psicomp = PSICOMP_RBF_GPU() + else: + if isinstance(self.psicomp,PSICOMP_RBF_GPU): + self.psicomp = PSICOMP_RBF() def K_of_r(self, r): return self.variance * np.exp(-0.5 * r**2)