Added verbose checks for likelihood

This commit is contained in:
Alan Saul 2014-11-04 16:17:09 +00:00
parent 8ed9f0735a
commit a79b800683

View file

@ -75,7 +75,7 @@ def dparam_checkgrad(func, dfunc, params, params_names, args, constraints=None,
if verbose: if verbose:
print grad print grad
grad.checkgrad(verbose=1) grad.checkgrad(verbose=1)
if not grad.checkgrad(): if not grad.checkgrad(verbose=True):
gradchecking = False gradchecking = False
return gradchecking return gradchecking
@ -364,9 +364,8 @@ class TestNoiseModels(object):
dlogpdf_df = functools.partial(model.dlogpdf_df, y=Y) dlogpdf_df = functools.partial(model.dlogpdf_df, y=Y)
grad = GradientChecker(logpdf, dlogpdf_df, f.copy(), 'g') grad = GradientChecker(logpdf, dlogpdf_df, f.copy(), 'g')
grad.randomize() grad.randomize()
grad.checkgrad(verbose=1)
print model print model
assert grad.checkgrad() assert grad.checkgrad(verbose=1)
@with_setup(setUp, tearDown) @with_setup(setUp, tearDown)
def t_d2logpdf_df2(self, model, Y, f): def t_d2logpdf_df2(self, model, Y, f):
@ -375,9 +374,8 @@ class TestNoiseModels(object):
d2logpdf_df2 = functools.partial(model.d2logpdf_df2, y=Y) d2logpdf_df2 = functools.partial(model.d2logpdf_df2, y=Y)
grad = GradientChecker(dlogpdf_df, d2logpdf_df2, f.copy(), 'g') grad = GradientChecker(dlogpdf_df, d2logpdf_df2, f.copy(), 'g')
grad.randomize() grad.randomize()
grad.checkgrad(verbose=1)
print model print model
assert grad.checkgrad() assert grad.checkgrad(verbose=1)
@with_setup(setUp, tearDown) @with_setup(setUp, tearDown)
def t_d3logpdf_df3(self, model, Y, f): def t_d3logpdf_df3(self, model, Y, f):
@ -386,9 +384,8 @@ class TestNoiseModels(object):
d3logpdf_df3 = functools.partial(model.d3logpdf_df3, y=Y) d3logpdf_df3 = functools.partial(model.d3logpdf_df3, y=Y)
grad = GradientChecker(d2logpdf_df2, d3logpdf_df3, f.copy(), 'g') grad = GradientChecker(d2logpdf_df2, d3logpdf_df3, f.copy(), 'g')
grad.randomize() grad.randomize()
grad.checkgrad(verbose=1)
print model print model
assert grad.checkgrad() assert grad.checkgrad(verbose=1)
############## ##############
# df_dparams # # df_dparams #
@ -439,8 +436,8 @@ class TestNoiseModels(object):
grad.randomize() grad.randomize()
print grad print grad
grad.checkgrad(verbose=1) print model
assert grad.checkgrad() assert grad.checkgrad(verbose=1)
@with_setup(setUp, tearDown) @with_setup(setUp, tearDown)
def t_d2logpdf_dlink2(self, model, Y, f, link_f_constraints): def t_d2logpdf_dlink2(self, model, Y, f, link_f_constraints):
@ -454,9 +451,9 @@ class TestNoiseModels(object):
constraint('g', grad) constraint('g', grad)
grad.randomize() grad.randomize()
grad.checkgrad(verbose=1)
print grad print grad
assert grad.checkgrad() print model
assert grad.checkgrad(verbose=1)
@with_setup(setUp, tearDown) @with_setup(setUp, tearDown)
def t_d3logpdf_dlink3(self, model, Y, f, link_f_constraints): def t_d3logpdf_dlink3(self, model, Y, f, link_f_constraints):
@ -470,9 +467,9 @@ class TestNoiseModels(object):
constraint('g', grad) constraint('g', grad)
grad.randomize() grad.randomize()
grad.checkgrad(verbose=1)
print grad print grad
assert grad.checkgrad() print model
assert grad.checkgrad(verbose=1)
################# #################
# dlink_dparams # # dlink_dparams #
@ -535,13 +532,12 @@ class TestNoiseModels(object):
#m.optimize(max_iters=8) #m.optimize(max_iters=8)
print m print m
m.checkgrad(verbose=1, step=step)
#if not m.checkgrad(step=step): #if not m.checkgrad(step=step):
#m.checkgrad(verbose=1, step=step) #m.checkgrad(verbose=1, step=step)
#NOTE this test appears to be stochastic for some likelihoods (student t?) #NOTE this test appears to be stochastic for some likelihoods (student t?)
# appears to all be working in test mode right now... # appears to all be working in test mode right now...
#if isinstance(model, GPy.likelihoods.StudentT): #if isinstance(model, GPy.likelihoods.StudentT):
assert m.checkgrad(step=step) assert m.checkgrad(verbose=1, step=step)
########### ###########
# EP test # # EP test #
@ -563,9 +559,8 @@ class TestNoiseModels(object):
constraints[param_num](name, m) constraints[param_num](name, m)
m.randomize() m.randomize()
m.checkgrad(verbose=1, step=step)
print m print m
assert m.checkgrad(step=step) assert m.checkgrad(verbose=1, step=step)
class LaplaceTests(unittest.TestCase): class LaplaceTests(unittest.TestCase):
@ -616,8 +611,8 @@ class LaplaceTests(unittest.TestCase):
d2logpdf_df2 = functools.partial(self.gauss.d2logpdf_df2, y=self.Y) d2logpdf_df2 = functools.partial(self.gauss.d2logpdf_df2, y=self.Y)
grad = GradientChecker(dlogpdf_df, d2logpdf_df2, self.f.copy(), 'g') grad = GradientChecker(dlogpdf_df, d2logpdf_df2, self.f.copy(), 'g')
grad.randomize() grad.randomize()
grad.checkgrad(verbose=1)
self.assertTrue(grad.checkgrad()) self.assertTrue(grad.checkgrad(verbose=1))
def test_laplace_log_likelihood(self): def test_laplace_log_likelihood(self):
debug = False debug = False
@ -705,8 +700,8 @@ class LaplaceTests(unittest.TestCase):
#Check they are checkgradding #Check they are checkgradding
#m1.checkgrad(verbose=1) #m1.checkgrad(verbose=1)
#m2.checkgrad(verbose=1) #m2.checkgrad(verbose=1)
self.assertTrue(m1.checkgrad()) self.assertTrue(m1.checkgrad(verbose=True))
self.assertTrue(m2.checkgrad()) self.assertTrue(m2.checkgrad(verbose=True))
if __name__ == "__main__": if __name__ == "__main__":
print "Running unit tests" print "Running unit tests"