mirror of
https://github.com/SheffieldML/GPy.git
synced 2026-05-08 03:22:38 +02:00
Support non-symmetric dL_dKmm for stationary kernel
This commit is contained in:
parent
8eaa0bbf8a
commit
6119c33078
1 changed files with 7 additions and 4 deletions
|
|
@ -168,11 +168,14 @@ class Stationary(Kern):
|
||||||
|
|
||||||
#the lower memory way with a loop
|
#the lower memory way with a loop
|
||||||
tmp = invdist*dL_dr
|
tmp = invdist*dL_dr
|
||||||
if X2 is None:
|
|
||||||
tmp *= 2.
|
|
||||||
X2 = X
|
|
||||||
ret = np.empty(X.shape, dtype=np.float64)
|
ret = np.empty(X.shape, dtype=np.float64)
|
||||||
[np.einsum('ij,ij->i', tmp, X[:,q][:,None]-X2[:,q][None,:], out=ret[:,q]) for q in xrange(self.input_dim)]
|
if X2 is None:
|
||||||
|
[np.einsum('ij,ij->i', tmp, X[:,q][:,None]-X[:,q][None,:], out=ret[:,q]) for q in xrange(self.input_dim)]
|
||||||
|
ret2 = np.empty(X.shape, dtype=np.float64)
|
||||||
|
[np.einsum('ij,ji->j', tmp, X[:,q][:,None]-X[:,q][None,:], out=ret2[:,q]) for q in xrange(self.input_dim)]
|
||||||
|
ret += ret2
|
||||||
|
else:
|
||||||
|
[np.einsum('ij,ij->i', tmp, X[:,q][:,None]-X2[:,q][None,:], out=ret[:,q]) for q in xrange(self.input_dim)]
|
||||||
ret /= self.lengthscale**2
|
ret /= self.lengthscale**2
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue