From fd2fc557c67b0fc08283fe4d7e575acbdfa0a012 Mon Sep 17 00:00:00 2001 From: Zhenwen Dai Date: Tue, 29 Mar 2016 14:45:55 +0100 Subject: [PATCH] implement the gradient_X for standard_periodic kernel --- GPy/kern/src/standard_periodic.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/GPy/kern/src/standard_periodic.py b/GPy/kern/src/standard_periodic.py index e0c76d0c..b020d8e7 100644 --- a/GPy/kern/src/standard_periodic.py +++ b/GPy/kern/src/standard_periodic.py @@ -155,11 +155,14 @@ class StdPeriodic(Kern): self.period.gradient = 0 self.lengthscale.gradient = 0 -# def gradients_X(self, dL_dK, X, X2=None): -# """derivative of the covariance matrix with respect to X.""" -# -# raise NotImplemented("Periodic kernel: dK_dX not implemented") -# -# def gradients_X_diag(self, dL_dKdiag, X): -# -# raise NotImplemented("Periodic kernel: dKdiag_dX not implemented") + def gradients_X(self, dL_dK, X, X2=None): + K = self.K(X, X2) + if X2 is None: + dL_dK = dL_dK+dL_dK.T + X2 = X + dX = -np.pi*((dL_dK*K)[:,:,None]*np.sin(2*np.pi/self.period*(X[:,None,:] - X2[None,:,:]))/(2.*np.square(self.lengthscale)*self.period)).sum(1) + return dX + + def gradients_X_diag(self, dL_dKdiag, X): + return np.zeros(X.shape) + \ No newline at end of file