Fixed student_t approximation demo and changed convergence

critera to difference of f
This commit is contained in:
Alan Saul 2013-11-27 12:32:42 +00:00
parent c68fe7567a
commit 0f60fba125
2 changed files with 7 additions and 7 deletions

View file

@ -106,7 +106,7 @@ def student_t_approx():
corrupt_stu_t_likelihood = GPy.likelihoods.Laplace(Yc.copy(), t_distribution) corrupt_stu_t_likelihood = GPy.likelihoods.Laplace(Yc.copy(), t_distribution)
m = GPy.models.GPRegression(X, Yc.copy(), kernel4, likelihood=corrupt_stu_t_likelihood) m = GPy.models.GPRegression(X, Yc.copy(), kernel4, likelihood=corrupt_stu_t_likelihood)
m.ensure_default_constraints() m.ensure_default_constraints()
m.constrain_positive('t_noise') m.constrain_bounded('t_noise', 1e-6, 10.)
m.constrain_fixed('white', 1e-4) m.constrain_fixed('white', 1e-4)
m.randomize() m.randomize()
for a in range(1): for a in range(1):

View file

@ -65,11 +65,10 @@ class Laplace(likelihood):
self.old_Ki_f = None self.old_Ki_f = None
def predictive_values(self, mu, var, full_cov): def predictive_values(self,mu,var,full_cov,**noise_args):
if full_cov: if full_cov:
raise NotImplementedError("Cannot make correlated predictions\ raise NotImplementedError, "Cannot make correlated predictions with an EP likelihood"
with an Laplace likelihood") return self.noise_model.predictive_values(mu,var,**noise_args)
return self.noise_model.predictive_values(mu, var)
def log_predictive_density(self, y_test, mu_star, var_star): def log_predictive_density(self, y_test, mu_star, var_star):
""" """
@ -209,6 +208,7 @@ class Laplace(likelihood):
- 0.5*self.f_Ki_f - 0.5*self.f_Ki_f
+ 0.5*self.y_Wi_Ki_i_y + 0.5*self.y_Wi_Ki_i_y
) )
#print "Term, {}, {}, {}, {}, {}".format(self.lik, - 0.5*self.ln_B_det, + 0.5*self.ln_det_Wi_K, - 0.5*self.f_Ki_f, + 0.5*self.y_Wi_Ki_i_y)
#Convert to float as its (1, 1) and Z must be a scalar #Convert to float as its (1, 1) and Z must be a scalar
self.Z = np.float64(Z_tilde) self.Z = np.float64(Z_tilde)
@ -380,8 +380,8 @@ class Laplace(likelihood):
#difference = abs(new_obj - old_obj) #difference = abs(new_obj - old_obj)
#old_obj = new_obj.copy() #old_obj = new_obj.copy()
#difference = np.abs(np.sum(f - f_old)) difference = np.abs(np.sum(f - f_old))
difference = np.abs(np.sum(Ki_f - old_Ki_f)) #difference = np.abs(np.sum(Ki_f - old_Ki_f))
old_Ki_f = Ki_f.copy() old_Ki_f = Ki_f.copy()
i += 1 i += 1