mirror of
https://github.com/SheffieldML/GPy.git
synced 2026-05-11 21:12:38 +02:00
removed marginal and derivative from posterior object
This commit is contained in:
parent
052b888793
commit
ca1cb4eb22
5 changed files with 8 additions and 14 deletions
|
|
@ -60,10 +60,10 @@ class GP(Model):
|
|||
self.parameters_changed()
|
||||
|
||||
def parameters_changed(self):
|
||||
self.posterior = self.inference_method.inference(self.kern, self.X, self.likelihood, self.Y)
|
||||
self.posterior, self._log_marginal_likelihood, self._dL_dK = self.inference_method.inference(self.kern, self.X, self.likelihood, self.Y)
|
||||
|
||||
def log_likelihood(self):
|
||||
return self.posterior.log_marginal
|
||||
return self._log_marginal_likelihood
|
||||
|
||||
def dL_dtheta_K(self):
|
||||
return self.kern.dK_dtheta(self.posterior.dL_dK, self.X)
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ import pylab as pb
|
|||
from gp import GP
|
||||
from parameterization.param import Param
|
||||
from ..inference.latent_function_inference import varDTC
|
||||
from posterior import Posterior
|
||||
|
||||
class SparseGP(GP):
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -53,6 +53,6 @@ class ExactGaussianInference(object):
|
|||
|
||||
likelihood.update_gradients(np.diag(dL_dK))
|
||||
|
||||
return Posterior(log_marginal, dL_dK, LW, alpha, K)
|
||||
return Posterior(LW, alpha, K), log_marginal, dL_dK
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -14,10 +14,8 @@ class Posterior(object):
|
|||
schemes and the model classes.
|
||||
|
||||
"""
|
||||
def __init__(self, log_marginal, dL_dK, woodbury_chol=None, woodbury_vector=None, K=None, mean=None, cov=None, K_chol=None):
|
||||
def __init__(self, woodbury_chol=None, woodbury_vector=None, K=None, mean=None, cov=None, K_chol=None):
|
||||
"""
|
||||
log_marginal: log p(Y|X)
|
||||
dL_dK: d/dK log p(Y|X)
|
||||
woodbury_chol : a lower triangular matrix L that satisfies posterior_covariance = K - K L^{-T} L^{-1} K
|
||||
woodbury_vector : a matrix (or vector, as Nx1 matrix) M which satisfies posterior_mean = K M
|
||||
K : the proir covariance (required for lazy computation of various quantities)
|
||||
|
|
@ -26,8 +24,6 @@ class Posterior(object):
|
|||
|
||||
Not all of the above need to be supplied! You *must* supply:
|
||||
|
||||
log_marginal
|
||||
dL_dK
|
||||
K (for lazy computation)
|
||||
|
||||
You may supply either:
|
||||
|
|
@ -46,8 +42,6 @@ class Posterior(object):
|
|||
From the supplied quantities, all of the others will be computed on demand (lazy computation)
|
||||
"""
|
||||
#obligatory
|
||||
self.log_marginal = log_marginal
|
||||
self.dL_dK = dL_dK
|
||||
self._K = K
|
||||
|
||||
if ((woodbury_chol is not None) and (woodbury_vector is not None) and (K is not None)) or ((mean is not None) and (cov is not None) and (K is not None)):
|
||||
|
|
|
|||
|
|
@ -2,10 +2,11 @@
|
|||
# Licensed under the BSD 3-clause license (see LICENSE.txt)
|
||||
|
||||
from posterior import Posterior
|
||||
from .../util.linalg import pdinv, dpotrs, tdot
|
||||
from ...util.linalg import pdinv, dpotrs, tdot
|
||||
import numpy as np
|
||||
log_2_pi = np.log(2*np.pi)
|
||||
|
||||
class DTCVar(object):
|
||||
class VarDTC(object):
|
||||
"""
|
||||
An object for inference when the likelihood is Gaussian, but we want to do sparse inference.
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue