From 2e9f63b7b4e4e069790f320a8dd915e6d94d6eb5 Mon Sep 17 00:00:00 2001 From: Zhenwen Dai Date: Mon, 13 Oct 2014 16:20:44 +0100 Subject: [PATCH] update hmc for tie framework --- GPy/core/parameterization/parameter_core.py | 15 ++++----------- GPy/inference/optimization/hmc.py | 8 ++++---- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/GPy/core/parameterization/parameter_core.py b/GPy/core/parameterization/parameter_core.py index 0b463f89..f890a0aa 100644 --- a/GPy/core/parameterization/parameter_core.py +++ b/GPy/core/parameterization/parameter_core.py @@ -954,21 +954,14 @@ class Parameterizable(OptimizationHandlable): return self._param_array_ @property - def unfixed_param_array(self): + def exposed_param_array(self): """ - Array representing the parameters of this class. - There is only one copy of all parameters in memory, two during optimization. - - !WARNING!: setting the parameter array MUST always be done in memory: - m.param_array[:] = m_copy.param_array """ if self.__dict__.get('_param_array_', None) is None: self._param_array_ = np.empty(self.size, dtype=np.float64) - - if self.constraints[__fixed__].size !=0: - fixes = np.ones(self.size).astype(bool) - fixes[self.constraints[__fixed__]] = FIXED - return self._param_array_[fixes] + + if self._has_hidden(): + return self._param_array_[self._exposed_] else: return self._param_array_ diff --git a/GPy/inference/optimization/hmc.py b/GPy/inference/optimization/hmc.py index 8c65cdf0..b273624b 100644 --- a/GPy/inference/optimization/hmc.py +++ b/GPy/inference/optimization/hmc.py @@ -20,7 +20,7 @@ class HMC: self.p[:] = np.random.multivariate_normal(np.zeros(self.p.size),self.M) H_old = self._computeH() theta_old = self.model.optimizer_array.copy() - params[i] = self.model.unfixed_param_array + params[i] = self.model.exposed_param_array #Matropolis self._update(hmc_iters) H_new = self._computeH() @@ -30,7 +30,7 @@ class HMC: else: k = np.exp(H_old-H_new) if np.random.rand()