diff --git a/GPy/core/sparse_gp.py b/GPy/core/sparse_gp.py index ac752c36..c7c9bb55 100644 --- a/GPy/core/sparse_gp.py +++ b/GPy/core/sparse_gp.py @@ -46,7 +46,7 @@ class SparseGP(GP): self.num_inducing = Z.shape[0] GP.__init__(self, X, Y, kernel, likelihood, inference_method=inference_method, name=name, Y_metadata=Y_metadata) - + self.logger.info("Adding Z as parameter") self.add_parameter(self.Z, index=0) def has_uncertain_inputs(self): @@ -66,10 +66,10 @@ class SparseGP(GP): #gradients wrt Z self.Z.gradient = self.kern.gradients_X(dL_dKmm, self.Z) self.Z.gradient += self.kern.gradients_Z_expectations( - self.grad_dict['dL_dpsi0'], - self.grad_dict['dL_dpsi1'], - self.grad_dict['dL_dpsi2'], - Z=self.Z, + self.grad_dict['dL_dpsi0'], + self.grad_dict['dL_dpsi1'], + self.grad_dict['dL_dpsi2'], + Z=self.Z, variational_posterior=self.X) else: #gradients wrt kernel diff --git a/GPy/inference/latent_function_inference/var_dtc.py b/GPy/inference/latent_function_inference/var_dtc.py index 059d1daa..e48c61be 100644 --- a/GPy/inference/latent_function_inference/var_dtc.py +++ b/GPy/inference/latent_function_inference/var_dtc.py @@ -9,7 +9,7 @@ import numpy as np from ...util.misc import param_to_array from . import LatentFunctionInference log_2_pi = np.log(2*np.pi) -import logging +import logging, itertools logger = logging.getLogger('vardtc') class VarDTC(LatentFunctionInference): @@ -228,18 +228,28 @@ class VarDTCMissingData(LatentFunctionInference): self._subarray_indices = [] csa = common_subarrays(inan, 1) size = len(csa) + next_ten = 0 for i, (v,ind) in enumerate(csa.iteritems()): if not np.all(v): - logger.info('preparing subarrays {:3.3%}'.format((i+1.)/size)) + if ((i+1.)/size) >= next_ten: + logger.info('preparing subarrays {:3%}'.format((i+1.)/size)) + next_ten += max(.1, 1./size) v = ~np.array(v, dtype=bool) ind = np.array(ind, dtype=int) if ind.size == Y.shape[1]: ind = slice(None) self._subarray_indices.append([v,ind]) - logger.info('preparing subarrays Y') + #logger.info('preparing subarrays {:3.3%}'.format((i+1.)/size)) #Ys = [Y[v, :][:, ind] for v, ind in self._subarray_indices] logger.info('preparing traces Y') + + next_ten = [0.] + count = itertools.count() def trace(y, v, ind): + i = count.next() + if ((i+1.)/size) >= next_ten[0]: + logger.info('preparing traces {:3%}'.format((i+1.)/size)) + next_ten[0] += .1 y = y[v,:][:,ind] return np.einsum('ij,ij->', y,y) traces = [trace(Y, v, ind) for v, ind in self._subarray_indices] diff --git a/GPy/models/bayesian_gplvm.py b/GPy/models/bayesian_gplvm.py index 29478ed7..5d1cec12 100644 --- a/GPy/models/bayesian_gplvm.py +++ b/GPy/models/bayesian_gplvm.py @@ -67,6 +67,7 @@ class BayesianGPLVM(SparseGP): inference_method = VarDTC() SparseGP.__init__(self, X, Y, Z, kernel, likelihood, inference_method, name, **kwargs) + self.logger.info("Adding X as parameter") self.add_parameter(self.X, index=0) def set_X_gradients(self, X, X_grad):