mirror of
https://github.com/SheffieldML/GPy.git
synced 2026-05-07 11:02:38 +02:00
Fixed bug in the product of kernels with tied parameters
This commit is contained in:
parent
a1568ca1c8
commit
b0f6495ed4
3 changed files with 10 additions and 3 deletions
|
|
@ -102,6 +102,11 @@ class parameterised(object):
|
||||||
else:
|
else:
|
||||||
return expr
|
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):
|
def constrain_positive(self, which):
|
||||||
"""
|
"""
|
||||||
|
|
@ -149,8 +154,6 @@ class parameterised(object):
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def constrain_negative(self,which):
|
def constrain_negative(self,which):
|
||||||
"""
|
"""
|
||||||
Set negative constraints.
|
Set negative constraints.
|
||||||
|
|
|
||||||
|
|
@ -236,6 +236,8 @@ class kern(parameterised):
|
||||||
X2 = X
|
X2 = X
|
||||||
target = np.zeros(self.Nparam)
|
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)]
|
[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
|
return target
|
||||||
|
|
||||||
def dK_dX(self,partial,X,X2=None,slices1=None,slices2=None):
|
def dK_dX(self,partial,X,X2=None,slices1=None,slices2=None):
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,9 @@ class GP(model):
|
||||||
|
|
||||||
def _set_params(self,p):
|
def _set_params(self,p):
|
||||||
self.kern._set_params_transformed(p[:self.kern.Nparam])
|
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.kern.K(self.X,slices1=self.Xslices)
|
||||||
self.K += self.likelihood.covariance_matrix
|
self.K += self.likelihood.covariance_matrix
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue