mirror of
https://github.com/SheffieldML/GPy.git
synced 2026-05-09 20:12:38 +02:00
[sparse gp] memory overflow with big data, iterating over dimensions now
This commit is contained in:
parent
2d39afd0a5
commit
e7650c8a90
1 changed files with 8 additions and 1 deletions
|
|
@ -10,6 +10,7 @@ from .parameterization.variational import VariationalPosterior, NormalPosterior
|
||||||
from ..util.linalg import mdot
|
from ..util.linalg import mdot
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
import itertools
|
||||||
logger = logging.getLogger("sparse gp")
|
logger = logging.getLogger("sparse gp")
|
||||||
|
|
||||||
class SparseGP(GP):
|
class SparseGP(GP):
|
||||||
|
|
@ -135,7 +136,13 @@ class SparseGP(GP):
|
||||||
var = var
|
var = var
|
||||||
else:
|
else:
|
||||||
Kxx = kern.Kdiag(Xnew)
|
Kxx = kern.Kdiag(Xnew)
|
||||||
var = (Kxx - np.sum(np.dot(np.atleast_3d(self.posterior.woodbury_inv).T, Kx) * Kx[None,:,:], 1)).T
|
if self.posterior.woodbury_inv.ndim == 2:
|
||||||
|
var = Kxx - np.sum(np.dot(self.posterior.woodbury_inv.T, Kx) * Kx, 0)
|
||||||
|
elif self.posterior.woodbury_inv.ndim == 3:
|
||||||
|
var = np.empty((Kxx.shape[0],self.posterior.woodbury_inv.shape[2]))
|
||||||
|
for i in range(var.shape[1]):
|
||||||
|
var[:, i] = (Kxx - (np.sum(np.dot(self.posterior.woodbury_inv[:, :, i].T, Kx) * Kx, 0)))
|
||||||
|
var = var
|
||||||
#add in the mean function
|
#add in the mean function
|
||||||
if self.mean_function is not None:
|
if self.mean_function is not None:
|
||||||
mu += self.mean_function.f(Xnew)
|
mu += self.mean_function.f(Xnew)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue