From 8131a065cb75b551a7b6ec84b61b932fc18c998f Mon Sep 17 00:00:00 2001 From: James Hensman Date: Thu, 18 Jul 2013 15:36:04 +0100 Subject: [PATCH] small changes to rbf and rbf_inv --- GPy/core/gp.py | 4 ++-- GPy/kern/parts/rbf.py | 3 +-- GPy/kern/parts/rbf_inv.py | 7 +++---- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/GPy/core/gp.py b/GPy/core/gp.py index 847cd99d..e6c3a045 100644 --- a/GPy/core/gp.py +++ b/GPy/core/gp.py @@ -127,7 +127,7 @@ class GP(GPBase): debug_this # @UndefinedVariable return mu, var - def predict(self, Xnew, which_parts='all', full_cov=False): + def predict(self, Xnew, which_parts='all', full_cov=False, likelihood_args=dict()): """ Predict the function(s) at the new point(s) Xnew. Arguments @@ -152,6 +152,6 @@ class GP(GPBase): mu, var = self._raw_predict(Xnew, full_cov=full_cov, which_parts=which_parts) # now push through likelihood - mean, var, _025pm, _975pm = self.likelihood.predictive_values(mu, var, full_cov) + mean, var, _025pm, _975pm = self.likelihood.predictive_values(mu, var, full_cov, **likelihood_args) return mean, var, _025pm, _975pm diff --git a/GPy/kern/parts/rbf.py b/GPy/kern/parts/rbf.py index d317e4b7..9ce37f93 100644 --- a/GPy/kern/parts/rbf.py +++ b/GPy/kern/parts/rbf.py @@ -166,9 +166,8 @@ class RBF(Kernpart): def dpsi1_dtheta(self, dL_dpsi1, Z, mu, S, target): self._psi_computations(Z, mu, S) - denom_deriv = S[:, None, :] / (self.lengthscale ** 3 + self.lengthscale * S[:, None, :]) - d_length = self._psi1[:, :, None] * (self.lengthscale * np.square(self._psi1_dist / (self.lengthscale2 + S[:, None, :])) + denom_deriv) target[0] += np.sum(dL_dpsi1 * self._psi1 / self.variance) + d_length = self._psi1[:,:,None] * ((self._psi1_dist_sq - 1.)/(self.lengthscale*self._psi1_denom) +1./self.lengthscale) dpsi1_dlength = d_length * dL_dpsi1[:, :, None] if not self.ARD: target[1] += dpsi1_dlength.sum() diff --git a/GPy/kern/parts/rbf_inv.py b/GPy/kern/parts/rbf_inv.py index f933d395..af0d3b80 100644 --- a/GPy/kern/parts/rbf_inv.py +++ b/GPy/kern/parts/rbf_inv.py @@ -159,12 +159,11 @@ class RBFInv(RBF): def dpsi1_dtheta(self, dL_dpsi1, Z, mu, S, target): self._psi_computations(Z, mu, S) - ##d_length = self._psi1[:, :, None] * (-0.5 * ((np.square((self._psi1_dist)/(self.inv_lengthscale * S[:,None,:] + 1))) + ((S[:, None, :])/(self.inv_lengthscale * S[:, None, :] + 1)))) tmp = 1 + S[:,None,:]*self.inv_lengthscale2 - #inv_len3 = np.power(self.inv_lengthscale,3) - d_length = -(self._psi1[:, :, None] * ((np.square(self._psi1_dist) * self.inv_lengthscale)/(tmp**2) + (S[:,None,:]*self.inv_lengthscale)/(tmp))) + d_inv_length_old = -self._psi1[:,:,None] * ((self._psi1_dist_sq - 1.)/(self.lengthscale*self._psi1_denom) + self.inv_lengthscale)/self.inv_lengthscale2 + d_inv_length = -self._psi1[:,:,None] * ((self._psi1_dist_sq - 1.)/self._psi1_denom + self.lengthscale) target[0] += np.sum(dL_dpsi1 * self._psi1 / self.variance) - dpsi1_dlength = d_length * dL_dpsi1[:, :, None] + dpsi1_dlength = d_inv_length * dL_dpsi1[:, :, None] if not self.ARD: target[1] += dpsi1_dlength.sum()#*(-self.lengthscale2) else: