diff --git a/GPy/core/model.py b/GPy/core/model.py index 2bfb02a5..063eaf7d 100644 --- a/GPy/core/model.py +++ b/GPy/core/model.py @@ -25,7 +25,7 @@ class model(parameterised): raise NotImplementedError, "this needs to be implemented to utilise the model class" def log_likelihood(self): raise NotImplementedError, "this needs to be implemented to utilise the model class" - def log_likelihood_gradients(self): + def _log_likelihood_gradients(self): raise NotImplementedError, "this needs to be implemented to utilise the model class" def set_prior(self,which,what): @@ -108,7 +108,7 @@ class model(parameterised): """evaluate the prior""" return np.sum([p.lnpdf(x) for p, x in zip(self.priors,self._get_params()) if p is not None]) - def log_prior_gradients(self): + def _log_prior_gradients(self): """evaluate the gradients of the priors""" x = self._get_params() ret = np.zeros(x.size) @@ -120,7 +120,7 @@ class model(parameterised): Use self.log_likelihood_gradients and self.prior_gradients to get the gradients of the model. Adjust the gradient for constraints and ties, return. """ - g = self.log_likelihood_gradients() + self.log_prior_gradients() + g = self._log_likelihood_gradients() + self._log_prior_gradients() x = self._get_params() g[self.constrained_positive_indices] = g[self.constrained_positive_indices]*x[self.constrained_positive_indices] g[self.constrained_negative_indices] = g[self.constrained_negative_indices]*x[self.constrained_negative_indices] diff --git a/GPy/inference/likelihoods.py b/GPy/inference/likelihoods.py index 6f5e81fa..53dd4248 100644 --- a/GPy/inference/likelihoods.py +++ b/GPy/inference/likelihoods.py @@ -99,6 +99,6 @@ class probit(likelihood): def predictive_mean(self,mu,variance): return stats.norm.cdf(mu/np.sqrt(1+variance)) - def log_likelihood_gradients(): + def _log_likelihood_gradients(): raise NotImplementedError diff --git a/GPy/models/GPLVM.py b/GPy/models/GPLVM.py index f4723396..3749ee32 100644 --- a/GPy/models/GPLVM.py +++ b/GPy/models/GPLVM.py @@ -44,7 +44,7 @@ class GPLVM(GP_regression): self.X = x[:self.X.size].reshape(self.N,self.Q).copy() GP_regression._set_params(self, x[self.X.size:]) - def log_likelihood_gradients(self): + def _log_likelihood_gradients(self): dL_dK = self.dL_dK() dL_dtheta = self.kern.dK_dtheta(dL_dK,self.X) diff --git a/GPy/models/GP_EP.py b/GPy/models/GP_EP.py index 6f5aad6e..51d69d0a 100644 --- a/GPy/models/GP_EP.py +++ b/GPy/models/GP_EP.py @@ -78,7 +78,7 @@ class GP_EP(model): L3 = sum(np.log(self.ep_approx.Z_hat)) return L1 + L2A + L2B + L3 - def log_likelihood_gradients(self): + def _log_likelihood_gradients(self): dK_dp = self.kernel.dK_dtheta(self.X) self.dK_dp = dK_dp aux1,info_1 = linalg.flapack.dtrtrs(self.L,np.dot(self.Sroot_tilde_K,self.ep_approx.v_tilde),lower=1) diff --git a/GPy/models/GP_regression.py b/GPy/models/GP_regression.py index 91074269..eee0fb58 100644 --- a/GPy/models/GP_regression.py +++ b/GPy/models/GP_regression.py @@ -103,7 +103,7 @@ class GP_regression(model): return dL_dK - def log_likelihood_gradients(self): + def _log_likelihood_gradients(self): return self.kern.dK_dtheta(partial=self.dL_dK(),X=self.X) def predict(self,Xnew, slices=None, full_cov=False): diff --git a/GPy/models/generalized_FITC.py b/GPy/models/generalized_FITC.py index a20666d0..d8e9c23d 100644 --- a/GPy/models/generalized_FITC.py +++ b/GPy/models/generalized_FITC.py @@ -99,7 +99,7 @@ class generalized_FITC(model): E = .5*np.sum((self.ep_approx.v_/self.ep_approx.tau_ - self.mu_tilde.flatten())**2/(1./self.ep_approx.tau_ + 1./self.ep_approx.tau_tilde)) return A + B + C + D + E - def log_likelihood_gradients(self): + def _log_likelihood_gradients(self): dKmm_dtheta = self.kernel.dK_dtheta(self.Z) dKnn_dtheta = self.kernel.dK_dtheta(self.X) dKmn_dtheta = self.kernel.dK_dtheta(self.Z,self.X) diff --git a/GPy/models/sparse_GPLVM.py b/GPy/models/sparse_GPLVM.py index 1c6a03cf..84a04bfd 100644 --- a/GPy/models/sparse_GPLVM.py +++ b/GPy/models/sparse_GPLVM.py @@ -49,8 +49,8 @@ class sparse_GPLVM(sparse_GP_regression, GPLVM): return dL_dX - def log_likelihood_gradients(self): - return np.hstack((self.dL_dX().flatten(), sparse_GP_regression.log_likelihood_gradients(self))) + def _log_likelihood_gradients(self): + return np.hstack((self.dL_dX().flatten(), sparse_GP_regression._log_likelihood_gradients(self))) def plot(self): GPLVM.plot(self) diff --git a/GPy/models/sparse_GP_regression.py b/GPy/models/sparse_GP_regression.py index 59e6ebbb..870828ca 100644 --- a/GPy/models/sparse_GP_regression.py +++ b/GPy/models/sparse_GP_regression.py @@ -168,7 +168,7 @@ class sparse_GP_regression(GP_regression): dL_dZ += self.kern.dK_dX(dL_dpsi1,self.Z,self.X) return dL_dZ - def log_likelihood_gradients(self): + def _log_likelihood_gradients(self): return np.hstack([self.dL_dZ().flatten(), self.dL_dbeta(), self.dL_dtheta()]) def _raw_predict(self, Xnew, slices, full_cov=False): diff --git a/GPy/models/warped_GP.py b/GPy/models/warped_GP.py index ea3c44cc..ff6267d2 100644 --- a/GPy/models/warped_GP.py +++ b/GPy/models/warped_GP.py @@ -59,8 +59,8 @@ class warpedGP(GP_regression): jacobian = self.warping_function.fgrad_y(self.Z, self.warping_params) return ll + np.log(jacobian).sum() - def log_likelihood_gradients(self): - ll_grads = GP_regression.log_likelihood_gradients(self) + def _log_likelihood_gradients(self): + ll_grads = GP_regression._log_likelihood_gradients(self) alpha = np.dot(self.Ki, self.Y.flatten()) warping_grads = self.warping_function_gradients(alpha) return np.hstack((warping_grads.flatten(), ll_grads.flatten()))