About to rip out old chain rule method of learning gradients

This commit is contained in:
Alan Saul 2013-05-29 13:46:55 +01:00
parent 146d7e2458
commit d63d370641
2 changed files with 4 additions and 3 deletions

View file

@ -87,7 +87,7 @@ class Laplace(likelihood):
#dL_dytil_simple_term = -0.5*np.dot(inv(self.K+self.Sigma_tilde),
#dL_dytil_simple_term = -np.dot(self.Y.T, inv(self.K+self.Sigma_tilde), self.Y)
c = inv(self.K+self.Sigma_tilde)
dL_dytil_simple_term = -0.5*np.diag(np.dot(c, self.Y) + np.dot(self.Y.T, c))
dL_dytil_simple_term = -0.5*np.diag(2*np.dot(c, self.Y))
P = np.diagflat(1/np.dot(Ki, self.f_hat))
K_Wi_i = inv(self.K+self.Sigma_tilde)
@ -96,6 +96,7 @@ class Laplace(likelihood):
+0.5*mdot(K_Wi_i, self.Y, self.Y.T, K_Wi_i, P)
) * np.eye(self.N))
dL_dytil = dL_dytil_simple_term + dL_dytil_difficult_term
dL_dytil = dL_dytil.reshape(1, self.N)
d3likelihood_d3fhat = self.likelihood_function.d3link(self.data, self.f_hat, self.extra_data)
Wi = np.diagonal(self.Sigma_tilde) #Convenience
@ -329,6 +330,7 @@ class Laplace(likelihood):
#+ y_W_f
#+ self.ln_z_hat
#)
self.Z_tilde = 0
##Check it isn't singular!
if cond(self.W) > epsilon:

View file

@ -62,8 +62,6 @@ class Likelihood_F_Grad(LikelihoodParamGrad):
def log_likelihood(self):
ll = self.func(self)
if self.param_name == "dL_dfhat_":
import ipdb; ipdb.set_trace() ### XXX BREAKPOINT
if len(ll.shape) == 0 or len(ll.shape) == 1:
return ll.sum()
elif len(ll.shape) == 2:
@ -128,6 +126,7 @@ class LaplaceTests(unittest.TestCase):
def test_dL_dfhat(self):
def L(self):
#return np.array(-0.5 * self.D * self.K_logdet + self._model_fit_term()) #Ignore Z for now
return np.array(-0.5 * self.D * self.K_logdet + self._model_fit_term() + self.likelihood.Z)
self.m = Likelihood_F_Grad(X=self.X, likelihood_function=self.stu_t_likelihood,