From a24853da6b5c1201184fb60265c0b08b7d77e3cd Mon Sep 17 00:00:00 2001 From: mzwiessele Date: Tue, 28 Apr 2015 11:38:35 +0200 Subject: [PATCH] [basis funcs] memory efficient posterior inference --- GPy/core/sparse_gp.py | 4 +++- GPy/kern/_src/basis_funcs.py | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/GPy/core/sparse_gp.py b/GPy/core/sparse_gp.py index 20156a64..0c5e1dd2 100644 --- a/GPy/core/sparse_gp.py +++ b/GPy/core/sparse_gp.py @@ -132,7 +132,9 @@ class SparseGP(GP): if self.posterior.woodbury_inv.ndim == 2: var = Kxx - np.dot(Kx.T, np.dot(self.posterior.woodbury_inv, Kx)) elif self.posterior.woodbury_inv.ndim == 3: - var = Kxx[:,:,None] - np.tensordot(np.dot(np.atleast_3d(self.posterior.woodbury_inv).T, Kx).T, Kx, [1,0]).swapaxes(1,2) + var = np.empty((Kxx.shape[0],Kxx.shape[1],self.posterior.woodbury_inv.shape[2])) + for i in range(var.shape[1]): + var[:, :, i] = (Kxx - mdot(Kx.T, self.posterior.woodbury_inv[:, :, i], Kx)) var = var else: Kxx = kern.Kdiag(Xnew) diff --git a/GPy/kern/_src/basis_funcs.py b/GPy/kern/_src/basis_funcs.py index 463d0320..e18be3fb 100644 --- a/GPy/kern/_src/basis_funcs.py +++ b/GPy/kern/_src/basis_funcs.py @@ -136,7 +136,7 @@ class DomainKernel(LinearSlopeBasisFuncKernel): def _phi(self, X): phi = np.where((X>self.start)*(X