From 0da81bc311fe2790275cd31d112b450e8cfa6511 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Fri, 26 Apr 2013 16:38:19 +0100 Subject: [PATCH] changes pull from devel --- GPy/examples/dimensionality_reduction.py | 15 ++++++++------- GPy/models/Bayesian_GPLVM.py | 19 ++++++++++--------- GPy/models/sparse_GP.py | 6 ++---- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/GPy/examples/dimensionality_reduction.py b/GPy/examples/dimensionality_reduction.py index 15fe9265..9da161f2 100644 --- a/GPy/examples/dimensionality_reduction.py +++ b/GPy/examples/dimensionality_reduction.py @@ -130,9 +130,9 @@ def _simulate_sincos(D1, D2, D3, N, M, Q, plot_sim=False): Y2 = S2.dot(np.random.randn(S2.shape[1], D2)) Y3 = S3.dot(np.random.randn(S3.shape[1], D3)) - Y1 += .2 * np.random.randn(*Y1.shape) - Y2 += .2 * np.random.randn(*Y2.shape) - Y3 += .2 * np.random.randn(*Y3.shape) + Y1 += .1 * np.random.randn(*Y1.shape) + Y2 += .1 * np.random.randn(*Y2.shape) + Y3 += .1 * np.random.randn(*Y3.shape) Y1 -= Y1.mean(0) Y2 -= Y2.mean(0) @@ -173,14 +173,15 @@ def bgplvm_simulation_matlab_compare(): from GPy.models import mrd from GPy import kern reload(mrd); reload(kern) - k = kern.linear(Q, ARD=True) + kern.bias(Q, np.exp(-2)) + kern.white(Q, np.exp(-2)) + k = kern.rbf(Q, ARD=True) + kern.bias(Q, np.exp(-2)) + kern.white(Q, np.exp(-2)) m = Bayesian_GPLVM(Y, Q, init="PCA", M=M, kernel=k, - # X=mu, - # X_variance=S, +# X=mu, +# X_variance=S, _debug=True) m.ensure_default_constraints() + m.auto_scale_factor = True m['noise'] = .01 # Y.var() / 100. - m['linear_variance'] = .01 + m['{}_variance'.format(k.parts[0].name)] = .01 return m def bgplvm_simulation(burnin='scg', plot_sim=False, diff --git a/GPy/models/Bayesian_GPLVM.py b/GPy/models/Bayesian_GPLVM.py index dc5dc0d4..0d4cf91e 100644 --- a/GPy/models/Bayesian_GPLVM.py +++ b/GPy/models/Bayesian_GPLVM.py @@ -47,7 +47,7 @@ class Bayesian_GPLVM(sparse_GP, GPLVM): self._debug = _debug if self._debug: - self.fcall = 0 + self.f_call = 0 self._count = itertools.count() self._savedklll = [] self._savedparams = [] @@ -94,7 +94,7 @@ class Bayesian_GPLVM(sparse_GP, GPLVM): except (LinAlgError, FloatingPointError, ZeroDivisionError): print "\rWARNING: Caught LinAlgError, continueing without setting " if self._debug: - self._savederrors.append(self.fcall) + self._savederrors.append(self.f_call) # if save_count > 10: # raise # self._set_params(self.oldps[-1], save_old=False, save_count=save_count + 1) @@ -242,9 +242,9 @@ class Bayesian_GPLVM(sparse_GP, GPLVM): ax1.text(.5, .5, "Optimization", alpha=.3, transform=ax1.transAxes, ha='center', va='center') kllls = np.array(self._savedklll) - LL, = ax1.plot(kllls[:, 0], kllls[:, 1] - kllls[:, 2], label=r'$\log p(\mathbf{Y})$', mew=1.5) - KL, = ax1.plot(kllls[:, 0], kllls[:, 2], label=r'$\mathcal{KL}(p||q)$', mew=1.5) - L, = ax1.plot(kllls[:, 0], kllls[:, 1], label=r'$L$', mew=1.5) # \mathds{E}_{q(\mathbf{X})}[p(\mathbf{Y|X})\frac{p(\mathbf{X})}{q(\mathbf{X})}] + LL, = ax1.plot(kllls[:, 0], kllls[:, 1] - kllls[:, 2], '-', label=r'$\log p(\mathbf{Y})$', mew=1.5) + KL, = ax1.plot(kllls[:, 0], kllls[:, 2], '-', label=r'$\mathcal{KL}(p||q)$', mew=1.5) + L, = ax1.plot(kllls[:, 0], kllls[:, 1], '-', label=r'$L$', mew=1.5) # \mathds{E}_{q(\mathbf{X})}[p(\mathbf{Y|X})\frac{p(\mathbf{X})}{q(\mathbf{X})}] param_dict = dict(self._savedparams) gradient_dict = dict(self._savedgradients) @@ -361,10 +361,11 @@ class Bayesian_GPLVM(sparse_GP, GPLVM): indicatorKL, = ax1.plot(kllls[self.showing, 0], kllls[self.showing, 2], 'o', c=KL.get_color()) indicatorLL, = ax1.plot(kllls[self.showing, 0], kllls[self.showing, 1] - kllls[self.showing, 2], 'o', c=LL.get_color()) indicatorL, = ax1.plot(kllls[self.showing, 0], kllls[self.showing, 1], 'o', c=L.get_color()) - for err in self._savederrors: - ax1.plot(kllls[err, 0], kllls[err, 2], "*", c=KL.get_color()) - ax1.plot(kllls[err, 0], kllls[err, 1] - kllls[err, 2], "*", c=LL.get_color()) - ax1.plot(kllls[err, 0], kllls[err, 1], "*", c=L.get_color()) +# for err in self._savederrors: +# if err < kllls.shape[0]: +# ax1.scatter(kllls[err, 0], kllls[err, 2], s=50, marker=(5, 2), c=KL.get_color()) +# ax1.scatter(kllls[err, 0], kllls[err, 1] - kllls[err, 2], s=50, marker=(5, 2), c=LL.get_color()) +# ax1.scatter(kllls[err, 0], kllls[err, 1], s=50, marker=(5, 2), c=L.get_color()) # try: # for f in figs: diff --git a/GPy/models/sparse_GP.py b/GPy/models/sparse_GP.py index e158e026..56a764af 100644 --- a/GPy/models/sparse_GP.py +++ b/GPy/models/sparse_GP.py @@ -109,10 +109,8 @@ class sparse_GP(GP): self.psi1V = np.dot(self.psi1, self.V) #tmp = np.dot(self.Lmi.T, self.LBi.T) - #tmp = linalg.lapack.clapack.dtrtrs(self.Lm.T,np.asarray(self.LBi.T,order='C'),lower=0)[0] - #self.C = np.dot(tmp,tmp.T) #TODO: tmp is triangular. replace with dtrmm (blas) when available - tmp = linalg.lapack.flapack.dtrtrs(self.Lm,np.asfortranarray(self.Bi),lower=1,trans=1)[0] - self.C = linalg.lapack.flapack.dtrtrs(self.Lm,np.asfortranarray(tmp.T),lower=1,trans=1)[0] + tmp = linalg.lapack.clapack.dtrtrs(self.Lm.T,np.asarray(self.LBi.T,order='C'),lower=0)[0] + self.C = np.dot(tmp,tmp.T) #TODO: tmp is triangular. replace with dtrmm (blas) when available self.Cpsi1V = np.dot(self.C,self.psi1V) self.Cpsi1VVpsi1 = np.dot(self.Cpsi1V,self.psi1V.T) #self.E = np.dot(self.Cpsi1VVpsi1,self.C)/sf2