mirror of
https://github.com/SheffieldML/GPy.git
synced 2026-05-11 13:02:38 +02:00
very basic GP_regression demo is working
This commit is contained in:
parent
07d793e309
commit
4b4f1da128
10 changed files with 31 additions and 41 deletions
|
|
@ -166,8 +166,8 @@ class kern(parameterised):
|
|||
slices1, slices2 = self._process_slices(slices1,slices2)
|
||||
if X2 is None:
|
||||
X2 = X
|
||||
target = np.zeros((X.shape[0],X2.shape[0],self.Nparam))
|
||||
[p.dK_dtheta(X[s1,i_s],X2[s2,i_s],target[s1,s2,ps]) for p,i_s,ps,s1,s2 in zip(self.parts, self.input_slices, self.param_slices, slices1, slices2)]
|
||||
target = np.zeros(self.Nparam)
|
||||
[p.dK_dtheta(partial,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)]
|
||||
return target
|
||||
|
||||
def dK_dX(self,X,X2=None,slices1=None,slices2=None):
|
||||
|
|
@ -185,11 +185,13 @@ class kern(parameterised):
|
|||
[p.Kdiag(X[s,i_s],target=target[s]) for p,i_s,s in zip(self.parts,self.input_slices,slices)]
|
||||
return target
|
||||
|
||||
def dKdiag_dtheta(self,X,slices=None):
|
||||
def dKdiag_dtheta(self,partial,X,slices=None):
|
||||
assert X.shape[1]==self.D
|
||||
assert len(partial.shape)==1
|
||||
assert partial.size==X.shape[0]
|
||||
slices = self._process_slices(slices,False)
|
||||
target = np.zeros((X.shape[0],self.Nparam))
|
||||
[p.dKdiag_dtheta(X[s,i_s],target[s,ps]) for p,i_s,s,ps in zip(self.parts,self.input_slices,slices,self.param_slices)]
|
||||
target = np.zeros(self.Nparam)
|
||||
[p.dKdiag_dtheta(partial,X[s,i_s],target[ps]) for p,i_s,s,ps in zip(self.parts,self.input_slices,slices,self.param_slices)]
|
||||
return target
|
||||
|
||||
def dKdiag_dX(self, X, slices=None):
|
||||
|
|
|
|||
|
|
@ -50,14 +50,13 @@ class rbf(kernpart):
|
|||
def Kdiag(self,X,target):
|
||||
np.add(target,self.variance,target)
|
||||
|
||||
def dK_dtheta(self,X,X2,target):
|
||||
"""Return shape is NxMx(Ntheta)"""
|
||||
def dK_dtheta(self,partial,X,X2,target):
|
||||
self._K_computations(X,X2)
|
||||
target[:,:,0] += self._K_dvar
|
||||
target[:,:,1] += self._K_dvar*self.variance*self._K_dist2/self.lengthscale
|
||||
target[0] += np.sum(self._K_dvar*partial)
|
||||
target[1] += np.sum(self._K_dvar*self.variance*self._K_dist2/self.lengthscale*partial)
|
||||
|
||||
def dKdiag_dtheta(self,X,target):
|
||||
np.add(target[:,0],1.,target[:,0])
|
||||
target[0] += partial
|
||||
|
||||
def dK_dX(self,X,X2,target):
|
||||
self._K_computations(X,X2)
|
||||
|
|
|
|||
|
|
@ -37,10 +37,10 @@ class white(kernpart):
|
|||
def Kdiag(self,X,target):
|
||||
target += self.variance
|
||||
|
||||
def dK_dtheta(self,X,X2,target):
|
||||
def dK_dtheta(self,partial,X,X2,target):
|
||||
if X.shape==X2.shape:
|
||||
if np.all(X==X2):
|
||||
np.add(target[:,:,0],np.eye(X.shape[0]),target[:,:,0])
|
||||
target += np.trace(partial)
|
||||
|
||||
def dKdiag_dtheta(self,X,target):
|
||||
np.add(target[:,0],1.,target[:,0])
|
||||
|
|
@ -50,7 +50,7 @@ class white(kernpart):
|
|||
|
||||
def dKdiag_dX(self,X,target):
|
||||
pass
|
||||
|
||||
|
||||
def psi0(self,Z,mu,S,target):
|
||||
target += self.variance
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue