From 1946514593c379ce144785f4d1351d0fe75344ed Mon Sep 17 00:00:00 2001 From: mzwiessele Date: Fri, 24 Apr 2015 08:59:02 +0200 Subject: [PATCH] [paramnonparam] adding cdf like --- GPy/kern/_src/basis_funcs.py | 45 ++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/GPy/kern/_src/basis_funcs.py b/GPy/kern/_src/basis_funcs.py index 5225ff10..463d0320 100644 --- a/GPy/kern/_src/basis_funcs.py +++ b/GPy/kern/_src/basis_funcs.py @@ -136,3 +136,48 @@ class DomainKernel(LinearSlopeBasisFuncKernel): def _phi(self, X): phi = np.where((X>self.start)*(Xq', dL_dK, phi1, dphi1_dl) + else: + self.slope.gradient = self.variance * 2 * (dL_dK * phi1.dot(dphi1_dl.T)).sum() + else: + phi1 = self.phi(X) + phi2 = self.phi(X2) + if phi1.ndim != 2: + phi1 = phi1[:, None] + phi2 = phi2[:, None] + dphi1_dl = (phi1**2) * (np.exp(-((X-self.centers)*self.slope)) * (X-self.centers)) + dphi2_dl = (phi2**2) * (np.exp(-((X2-self.centers)*self.slope)) * (X2-self.centers)) + if self.ARD_slope: + self.slope.gradient = (self.variance * np.einsum('ij,iq,jq->q', dL_dK, phi1, dphi2_dl) + np.einsum('ij,iq,jq->q', dL_dK, phi2, dphi1_dl)) + else: + self.slope.gradient = self.variance * (dL_dK * phi1.dot(dphi2_dl.T)).sum() + (dL_dK * phi2.dot(dphi1_dl.T)).sum() + self.slope.gradient = np.where(np.isnan(self.slope.gradient), 0, self.slope.gradient)