diff --git a/GPy/kern/_src/rbf.py b/GPy/kern/_src/rbf.py index f4fb2ad5..d7d1554d 100644 --- a/GPy/kern/_src/rbf.py +++ b/GPy/kern/_src/rbf.py @@ -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)