stabilization of the Bernouolli

This commit is contained in:
James Hensman 2014-11-13 11:18:25 +00:00
parent c7d0bd2204
commit d9022c8cee

View file

@ -133,7 +133,7 @@ class Bernoulli(Likelihood):
"""
#objective = y*np.log(inv_link_f) + (1.-y)*np.log(inv_link_f)
p = np.where(y==1, inv_link_f, 1.-inv_link_f)
return np.log(p)
return np.log(np.clip(p, 1e-6 ,np.inf))
def dlogpdf_dlink(self, inv_link_f, y, Y_metadata=None):
"""
@ -152,7 +152,8 @@ class Bernoulli(Likelihood):
"""
#grad = (y/inv_link_f) - (1.-y)/(1-inv_link_f)
#grad = np.where(y, 1./inv_link_f, -1./(1-inv_link_f))
denom = np.where(y, inv_link_f, -(1-inv_link_f))
ff = np.clip(inv_link_f, 1e-6, 1-1e-6)
denom = np.where(y, ff, -(1-ff))
return 1./denom
def d2logpdf_dlink2(self, inv_link_f, y, Y_metadata=None):