change the inverse lengthscale of rbf

This commit is contained in:
Zhenwen Dai 2015-10-07 13:14:47 +01:00
parent 1a98681b86
commit 326ed31fbf

View file

@ -29,7 +29,7 @@ class RBF(Stationary):
self.use_invLengthscale = inv_l
if inv_l:
self.unlink_parameter(self.lengthscale)
self.inv_l = Param('inv_lengthscale',1./self.lengthscale**2, Logexp())
self.inv_l = Param('inv_lengthscale',1./self.lengthscale, Logexp())
self.link_parameter(self.inv_l)
def K_of_r(self, r):
@ -56,7 +56,7 @@ class RBF(Stationary):
return self.variance*np.sqrt(2*np.pi)*self.lengthscale*np.exp(-self.lengthscale*2*omega**2/2)
def parameters_changed(self):
if self.use_invLengthscale: self.lengthscale[:] = 1./np.sqrt(self.inv_l+1e-200)
if self.use_invLengthscale: self.lengthscale[:] = 1./(self.inv_l+1e-200)
super(RBF,self).parameters_changed()
#---------------------------------------#
@ -80,7 +80,7 @@ class RBF(Stationary):
self.variance.gradient = dL_dvar
self.lengthscale.gradient = dL_dlengscale
if self.use_invLengthscale:
self.inv_l.gradient = dL_dlengscale*(self.lengthscale**3/-2.)
self.inv_l.gradient = dL_dlengscale*(-self.lengthscale**2)
def gradients_Z_expectations(self, dL_dpsi0, dL_dpsi1, dL_dpsi2, Z, variational_posterior):
return self.psicomp.psiDerivativecomputations(self, dL_dpsi0, dL_dpsi1, dL_dpsi2, Z, variational_posterior)[2]
@ -90,8 +90,8 @@ class RBF(Stationary):
def update_gradients_diag(self, dL_dKdiag, X):
super(RBF,self).update_gradients_diag(dL_dKdiag, X)
if self.use_invLengthscale: self.inv_l.gradient =self.lengthscale.gradient*(self.lengthscale**3/-2.)
if self.use_invLengthscale: self.inv_l.gradient =self.lengthscale.gradient*(-self.lengthscale**2)
def update_gradients_full(self, dL_dK, X, X2=None):
super(RBF,self).update_gradients_full(dL_dK, X, X2)
if self.use_invLengthscale: self.inv_l.gradient =self.lengthscale.gradient*(self.lengthscale**3/-2.)
if self.use_invLengthscale: self.inv_l.gradient =self.lengthscale.gradient*(-self.lengthscale**2)