mirror of
https://github.com/SheffieldML/GPy.git
synced 2026-05-24 14:15:14 +02:00
changes pull from devel
This commit is contained in:
parent
16b64f41d6
commit
0da81bc311
3 changed files with 20 additions and 20 deletions
|
|
@ -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))
|
Y2 = S2.dot(np.random.randn(S2.shape[1], D2))
|
||||||
Y3 = S3.dot(np.random.randn(S3.shape[1], D3))
|
Y3 = S3.dot(np.random.randn(S3.shape[1], D3))
|
||||||
|
|
||||||
Y1 += .2 * np.random.randn(*Y1.shape)
|
Y1 += .1 * np.random.randn(*Y1.shape)
|
||||||
Y2 += .2 * np.random.randn(*Y2.shape)
|
Y2 += .1 * np.random.randn(*Y2.shape)
|
||||||
Y3 += .2 * np.random.randn(*Y3.shape)
|
Y3 += .1 * np.random.randn(*Y3.shape)
|
||||||
|
|
||||||
Y1 -= Y1.mean(0)
|
Y1 -= Y1.mean(0)
|
||||||
Y2 -= Y2.mean(0)
|
Y2 -= Y2.mean(0)
|
||||||
|
|
@ -173,14 +173,15 @@ def bgplvm_simulation_matlab_compare():
|
||||||
from GPy.models import mrd
|
from GPy.models import mrd
|
||||||
from GPy import kern
|
from GPy import kern
|
||||||
reload(mrd); reload(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,
|
m = Bayesian_GPLVM(Y, Q, init="PCA", M=M, kernel=k,
|
||||||
# X=mu,
|
# X=mu,
|
||||||
# X_variance=S,
|
# X_variance=S,
|
||||||
_debug=True)
|
_debug=True)
|
||||||
m.ensure_default_constraints()
|
m.ensure_default_constraints()
|
||||||
|
m.auto_scale_factor = True
|
||||||
m['noise'] = .01 # Y.var() / 100.
|
m['noise'] = .01 # Y.var() / 100.
|
||||||
m['linear_variance'] = .01
|
m['{}_variance'.format(k.parts[0].name)] = .01
|
||||||
return m
|
return m
|
||||||
|
|
||||||
def bgplvm_simulation(burnin='scg', plot_sim=False,
|
def bgplvm_simulation(burnin='scg', plot_sim=False,
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ class Bayesian_GPLVM(sparse_GP, GPLVM):
|
||||||
self._debug = _debug
|
self._debug = _debug
|
||||||
|
|
||||||
if self._debug:
|
if self._debug:
|
||||||
self.fcall = 0
|
self.f_call = 0
|
||||||
self._count = itertools.count()
|
self._count = itertools.count()
|
||||||
self._savedklll = []
|
self._savedklll = []
|
||||||
self._savedparams = []
|
self._savedparams = []
|
||||||
|
|
@ -94,7 +94,7 @@ class Bayesian_GPLVM(sparse_GP, GPLVM):
|
||||||
except (LinAlgError, FloatingPointError, ZeroDivisionError):
|
except (LinAlgError, FloatingPointError, ZeroDivisionError):
|
||||||
print "\rWARNING: Caught LinAlgError, continueing without setting "
|
print "\rWARNING: Caught LinAlgError, continueing without setting "
|
||||||
if self._debug:
|
if self._debug:
|
||||||
self._savederrors.append(self.fcall)
|
self._savederrors.append(self.f_call)
|
||||||
# if save_count > 10:
|
# if save_count > 10:
|
||||||
# raise
|
# raise
|
||||||
# self._set_params(self.oldps[-1], save_old=False, save_count=save_count + 1)
|
# 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,
|
ax1.text(.5, .5, "Optimization", alpha=.3, transform=ax1.transAxes,
|
||||||
ha='center', va='center')
|
ha='center', va='center')
|
||||||
kllls = np.array(self._savedklll)
|
kllls = np.array(self._savedklll)
|
||||||
LL, = ax1.plot(kllls[:, 0], kllls[:, 1] - kllls[:, 2], label=r'$\log p(\mathbf{Y})$', mew=1.5)
|
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)
|
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})}]
|
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)
|
param_dict = dict(self._savedparams)
|
||||||
gradient_dict = dict(self._savedgradients)
|
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())
|
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())
|
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())
|
indicatorL, = ax1.plot(kllls[self.showing, 0], kllls[self.showing, 1], 'o', c=L.get_color())
|
||||||
for err in self._savederrors:
|
# for err in self._savederrors:
|
||||||
ax1.plot(kllls[err, 0], kllls[err, 2], "*", c=KL.get_color())
|
# if err < kllls.shape[0]:
|
||||||
ax1.plot(kllls[err, 0], kllls[err, 1] - kllls[err, 2], "*", c=LL.get_color())
|
# ax1.scatter(kllls[err, 0], kllls[err, 2], s=50, marker=(5, 2), c=KL.get_color())
|
||||||
ax1.plot(kllls[err, 0], kllls[err, 1], "*", c=L.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:
|
# try:
|
||||||
# for f in figs:
|
# for f in figs:
|
||||||
|
|
|
||||||
|
|
@ -109,10 +109,8 @@ class sparse_GP(GP):
|
||||||
|
|
||||||
self.psi1V = np.dot(self.psi1, self.V)
|
self.psi1V = np.dot(self.psi1, self.V)
|
||||||
#tmp = np.dot(self.Lmi.T, self.LBi.T)
|
#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]
|
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.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]
|
|
||||||
self.Cpsi1V = np.dot(self.C,self.psi1V)
|
self.Cpsi1V = np.dot(self.C,self.psi1V)
|
||||||
self.Cpsi1VVpsi1 = np.dot(self.Cpsi1V,self.psi1V.T)
|
self.Cpsi1VVpsi1 = np.dot(self.Cpsi1V,self.psi1V.T)
|
||||||
#self.E = np.dot(self.Cpsi1VVpsi1,self.C)/sf2
|
#self.E = np.dot(self.Cpsi1VVpsi1,self.C)/sf2
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue