Fixed bug in the product of kernels with tied parameters

This commit is contained in:
Nicolas 2013-02-06 09:52:54 +00:00
parent a1568ca1c8
commit b0f6495ed4
3 changed files with 10 additions and 3 deletions

View file

@ -102,6 +102,11 @@ class parameterised(object):
else:
return expr
def Nparam_transformed(self):
ties = 0
for ar in self.tied_indices:
ties += ar.size - 1
return self.Nparam - len(self.constrained_fixed_indices) - ties
def constrain_positive(self, which):
"""
@ -149,8 +154,6 @@ class parameterised(object):
def constrain_negative(self,which):
"""
Set negative constraints.

View file

@ -236,6 +236,8 @@ class kern(parameterised):
X2 = X
target = np.zeros(self.Nparam)
[p.dK_dtheta(partial[s1,s2],X[s1,i_s],X2[s2,i_s],target[ps]) for p,i_s,ps,s1,s2 in zip(self.parts, self.input_slices, self.param_slices, slices1, slices2)]
#TODO: transform the gradients here!
return target
def dK_dX(self,partial,X,X2=None,slices1=None,slices2=None):

View file

@ -62,7 +62,9 @@ class GP(model):
def _set_params(self,p):
self.kern._set_params_transformed(p[:self.kern.Nparam])
self.likelihood._set_params(p[self.kern.Nparam:])
#self.likelihood._set_params(p[self.kern.Nparam:]) # test by Nicolas
self.likelihood._set_params(p[self.kern.Nparam_transformed():]) # test by Nicolas
self.K = self.kern.K(self.X,slices1=self.Xslices)
self.K += self.likelihood.covariance_matrix