From e869fcaf65d0ec99359723cee608ac7c1f17446a Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Tue, 25 Jun 2013 17:43:42 +0100 Subject: [PATCH 001/135] pcikling? --- GPy/core/gp.py | 4 + GPy/core/gp_base.py | 26 +++ GPy/core/model.py | 19 ++ GPy/core/parameterised.py | 18 ++ GPy/core/sparse_gp.py | 28 ++- GPy/kern/kern.py | 5 +- GPy/models/bayesian_gplvm.py | 362 ++--------------------------------- GPy/models/gplvm.py | 24 +-- GPy/models/mrd.py | 33 +++- 9 files changed, 149 insertions(+), 370 deletions(-) diff --git a/GPy/core/gp.py b/GPy/core/gp.py index 5172d9e7..e3bbc85d 100644 --- a/GPy/core/gp.py +++ b/GPy/core/gp.py @@ -31,6 +31,10 @@ class GP(GPBase): GPBase.__init__(self, X, likelihood, kernel, normalize_X=normalize_X) self._set_params(self._get_params()) + def __setstate__(self, state): + GPBase.__setstate__(self, state) + self._set_params(self._get_params()) + def _set_params(self, p): self.kern._set_params_transformed(p[:self.kern.num_params_transformed()]) self.likelihood._set_params(p[self.kern.num_params_transformed():]) diff --git a/GPy/core/gp_base.py b/GPy/core/gp_base.py index 0799e0c2..528d6acc 100644 --- a/GPy/core/gp_base.py +++ b/GPy/core/gp_base.py @@ -32,6 +32,32 @@ class GPBase(Model): # All leaf nodes should call self._set_params(self._get_params()) at # the end + def __getstate__(self): + """ + Get the current state of the class, + here just all the indices, rest can get recomputed + """ + return Model.__getstate__(self) + [self.X, + self.num_data, + self.input_dim, + self.kern, + self.likelihood, + self.output_dim, + self._Xoffset, + self._Xscale] + + def __setstate__(self, state): + self._Xscale = state.pop() + self._Xoffset = state.pop() + self.output_dim = state.pop() + self.likelihood = state.pop() + self.kern = state.pop() + self.input_dim = state.pop() + self.num_data = state.pop() + self.X = state.pop() + Model.__setstate__(self, state) + self._set_params(self._get_params()) + def plot_f(self, samples=0, plot_limits=None, which_data='all', which_parts='all', resolution=None, full_cov=False, fignum=None, ax=None): """ Plot the GP's view of the world, where the data is normalized and the diff --git a/GPy/core/model.py b/GPy/core/model.py index 05375b2a..3c5c8419 100644 --- a/GPy/core/model.py +++ b/GPy/core/model.py @@ -32,6 +32,25 @@ class Model(Parameterised): def _log_likelihood_gradients(self): raise NotImplementedError, "this needs to be implemented to use the Model class" + def __getstate__(self): + """ + Get the current state of the class, + here just all the indices, rest can get recomputed + """ + return Parameterised.__getstate__(self) + \ + [self.priors, self.optimization_runs, + self.sampling_runs, self.preferred_optimizer] + + def __setstate__(self, state): + """ + set state from previous call to getstate + """ + self.preferred_optimizer = state.pop() + self.sampling_runs = state.pop() + self.optimization_runs = state.pop() + self.priors = state.pop() + Parameterised.__setstate__(self, state) + def set_prior(self, regexp, what): """ Sets priors on the Model parameters. diff --git a/GPy/core/parameterised.py b/GPy/core/parameterised.py index b3a5712a..13467fdf 100644 --- a/GPy/core/parameterised.py +++ b/GPy/core/parameterised.py @@ -29,6 +29,24 @@ class Parameterised(object): """Returns a (deep) copy of the current model """ return copy.deepcopy(self) + def __getstate__(self): + """ + Get the current state of the class, + here just all the indices, rest can get recomputed + """ + return [self.tied_indices, + self.fixed_indices, + self.fixed_values, + self.constrained_indices, + self.constraints] + + def __setstate__(self, state): + self.constraints = state.pop() + self.constrained_indices = state.pop() + self.fixed_values = state.pop() + self.fixed_indices = state.pop() + self.tied_indices = state.pop() + @property def params(self): """ diff --git a/GPy/core/sparse_gp.py b/GPy/core/sparse_gp.py index 3183cff0..9c36cd2c 100644 --- a/GPy/core/sparse_gp.py +++ b/GPy/core/sparse_gp.py @@ -33,10 +33,11 @@ class SparseGP(GPBase): self.Z = Z self.num_inducing = Z.shape[0] - self.likelihood = likelihood +# self.likelihood = likelihood if X_variance is None: self.has_uncertain_inputs = False + self.X_variance = None else: assert X_variance.shape == X.shape self.has_uncertain_inputs = True @@ -49,6 +50,23 @@ class SparseGP(GPBase): if self.has_uncertain_inputs: self.X_variance /= np.square(self._Xscale) + def __getstate__(self): + """ + Get the current state of the class, + here just all the indices, rest can get recomputed + """ + return GPBase.__getstate__(self) + [self.Z, + self.num_inducing, + self.has_uncertain_inputs, + self.X_variance] + + def __setstate__(self, state): + self.X_variance = state.pop() + self.has_uncertain_inputs = state.pop() + self.num_inducing = state.pop() + self.Z = state.pop() + GPBase.__setstate__(self, state) + def _compute_kernel_matrices(self): # kernel computations, using BGPLVM notation self.Kmm = self.kern.K(self.Z) @@ -78,7 +96,7 @@ class SparseGP(GPBase): tmp = tmp.T else: if self.likelihood.is_heteroscedastic: - tmp = self.psi1 * (np.sqrt(self.likelihood.precision.flatten().reshape(self.num_data,1))) + tmp = self.psi1 * (np.sqrt(self.likelihood.precision.flatten().reshape(self.num_data, 1))) else: tmp = self.psi1 * (np.sqrt(self.likelihood.precision)) tmp, _ = dtrtrs(self.Lm, np.asfortranarray(tmp.T), lower=1) @@ -163,7 +181,7 @@ class SparseGP(GPBase): return np.hstack([self.Z.flatten(), self.kern._get_params_transformed(), self.likelihood._get_params()]) def _get_param_names(self): - return sum([['iip_%i_%i' % (i, j) for j in range(self.Z.shape[1])] for i in range(self.Z.shape[0])],[])\ + return sum([['iip_%i_%i' % (i, j) for j in range(self.Z.shape[1])] for i in range(self.Z.shape[0])], [])\ + self.kern._get_param_names_transformed() + self.likelihood._get_param_names() def update_likelihood_approximation(self): @@ -220,7 +238,7 @@ class SparseGP(GPBase): def _raw_predict(self, Xnew, X_variance_new=None, which_parts='all', full_cov=False): """Internal helper function for making predictions, does not account for normalization""" - Bi, _ = dpotri(self.LB, lower=0) # WTH? this lower switch should be 1, but that doesn't work! + Bi, _ = dpotri(self.LB, lower=0) # WTH? this lower switch should be 1, but that doesn't work! symmetrify(Bi) Kmmi_LmiBLmi = backsub_both_sides(self.Lm, np.eye(self.num_inducing) - Bi) @@ -293,7 +311,7 @@ class SparseGP(GPBase): GPBase.plot(self, samples=0, plot_limits=None, which_data='all', which_parts='all', resolution=None, levels=20, ax=ax) if self.X.shape[1] == 1: if self.has_uncertain_inputs: - Xu = self.X * self._Xscale + self._Xoffset # NOTE self.X are the normalized values now + Xu = self.X * self._Xscale + self._Xoffset # NOTE self.X are the normalized values now ax.errorbar(Xu[which_data, 0], self.likelihood.data[which_data, 0], xerr=2 * np.sqrt(self.X_variance[which_data, 0]), ecolor='k', fmt=None, elinewidth=.5, alpha=.5) diff --git a/GPy/kern/kern.py b/GPy/kern/kern.py index 76a0d99e..99689a74 100644 --- a/GPy/kern/kern.py +++ b/GPy/kern/kern.py @@ -45,14 +45,15 @@ class kern(Parameterised): Parameterised.__init__(self) - def plot_ARD(self, fignum=None, ax=None): + def plot_ARD(self, fignum=None, ax=None, title=None): """If an ARD kernel is present, it bar-plots the ARD parameters""" if ax is None: fig = pb.figure(fignum) ax = fig.add_subplot(111) for p in self.parts: if hasattr(p, 'ARD') and p.ARD: - ax.set_title('ARD parameters, %s kernel' % p.name) + if title is None: + ax.set_title('ARD parameters, %s kernel' % p.name) if p.name == 'linear': ard_params = p.variances diff --git a/GPy/models/bayesian_gplvm.py b/GPy/models/bayesian_gplvm.py index 8043c635..22ac9ede 100644 --- a/GPy/models/bayesian_gplvm.py +++ b/GPy/models/bayesian_gplvm.py @@ -45,32 +45,19 @@ class BayesianGPLVM(SparseGP, GPLVM): if kernel is None: kernel = kern.rbf(input_dim) + kern.white(input_dim) - self.oldpsave = oldpsave - self._oldps = [] - self._debug = _debug - - if self._debug: - self.f_call = 0 - self._count = itertools.count() - self._savedklll = [] - self._savedparams = [] - self._savedgradients = [] - self._savederrors = [] - self._savedpsiKmm = [] - self._savedABCD = [] - SparseGP.__init__(self, X, likelihood, kernel, Z=Z, X_variance=X_variance, **kwargs) self._set_params(self._get_params()) - @property - def oldps(self): - return self._oldps - @oldps.setter - def oldps(self, p): - if len(self._oldps) == (self.oldpsave + 1): - self._oldps.pop() - # if len(self._oldps) == 0 or not np.any([np.any(np.abs(p - op) > 1e-5) for op in self._oldps]): - self._oldps.insert(0, p.copy()) + def __getstate__(self): + """ + Get the current state of the class, + here just all the indices, rest can get recomputed + """ + return [self.init] + SparseGP.__getstate__(self) + + def __setstate__(self, state): + self.init = state.pop() + SparseGP.__setstate__(self, state) def _get_param_names(self): X_names = sum([['X_%i_%i' % (n, q) for q in range(self.input_dim)] for n in range(self.num_data)], []) @@ -90,24 +77,11 @@ class BayesianGPLVM(SparseGP, GPLVM): x = np.hstack((self.X.flatten(), self.X_variance.flatten(), SparseGP._get_params(self))) return x - def _clipped(self, x): - return x # np.clip(x, -1e300, 1e300) - def _set_params(self, x, save_old=True, save_count=0): -# try: - x = self._clipped(x) - N, input_dim = self.num_data, self.input_dim - self.X = x[:self.X.size].reshape(N, input_dim).copy() - self.X_variance = x[(N * input_dim):(2 * N * input_dim)].reshape(N, input_dim).copy() - SparseGP._set_params(self, x[(2 * N * input_dim):]) -# self.oldps = x -# except (LinAlgError, FloatingPointError, ZeroDivisionError): -# print "\rWARNING: Caught LinAlgError, continueing without setting " -# if self._debug: -# 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) + N, input_dim = self.num_data, self.input_dim + self.X = x[:self.X.size].reshape(N, input_dim).copy() + self.X_variance = x[(N * input_dim):(2 * N * input_dim)].reshape(N, input_dim).copy() + SparseGP._set_params(self, x[(2 * N * input_dim):]) def dKL_dmuS(self): dKL_dS = (1. - (1. / (self.X_variance))) * 0.5 @@ -131,53 +105,16 @@ class BayesianGPLVM(SparseGP, GPLVM): def log_likelihood(self): ll = SparseGP.log_likelihood(self) kl = self.KL_divergence() - -# if ll < -2E4: -# ll = -2E4 + np.random.randn() -# if kl > 5E4: -# kl = 5E4 + np.random.randn() - - if self._debug: - self.f_call = self._count.next() - if self.f_call % 1 == 0: - self._savedklll.append([self.f_call, ll, kl]) - self._savedparams.append([self.f_call, self._get_params()]) - self._savedgradients.append([self.f_call, self._log_likelihood_gradients()]) - self._savedpsiKmm.append([self.f_call, [self.Kmm, self.dL_dKmm]]) -# sf2 = self.scale_factor ** 2 - if self.likelihood.is_heteroscedastic: - A = -0.5 * self.num_data * self.input_dim * np.log(2.*np.pi) + 0.5 * np.sum(np.log(self.likelihood.precision)) - 0.5 * np.sum(self.V * self.likelihood.Y) -# B = -0.5 * self.input_dim * (np.sum(self.likelihood.precision.flatten() * self.psi0) - np.trace(self.A) * sf2) - B = -0.5 * self.input_dim * (np.sum(self.likelihood.precision.flatten() * self.psi0) - np.trace(self.A)) - else: - A = -0.5 * self.num_data * self.input_dim * (np.log(2.*np.pi) + np.log(self.likelihood._variance)) - 0.5 * self.likelihood.precision * self.likelihood.trYYT -# B = -0.5 * self.input_dim * (np.sum(self.likelihood.precision * self.psi0) - np.trace(self.A) * sf2) - B = -0.5 * self.input_dim * (np.sum(self.likelihood.precision * self.psi0) - np.trace(self.A)) - C = -self.input_dim * (np.sum(np.log(np.diag(self.LB)))) # + 0.5 * self.num_inducing * np.log(sf2)) - D = 0.5 * np.sum(np.square(self._LBi_Lmi_psi1V)) - self._savedABCD.append([self.f_call, A, B, C, D]) - - # print "\nkl:", kl, "ll:", ll return ll - kl def _log_likelihood_gradients(self): dKL_dmu, dKL_dS = self.dKL_dmuS() dL_dmu, dL_dS = self.dL_dmuS() - # TODO: find way to make faster - d_dmu = (dL_dmu - dKL_dmu).flatten() d_dS = (dL_dS - dKL_dS).flatten() - # TEST KL: ==================== - # d_dmu = (dKL_dmu).flatten() - # d_dS = (dKL_dS).flatten() - # ======================== - # TEST L: ==================== -# d_dmu = (dL_dmu).flatten() -# d_dS = (dL_dS).flatten() - # ======================== self.dbound_dmuS = np.hstack((d_dmu, d_dS)) self.dbound_dZtheta = SparseGP._log_likelihood_gradients(self) - return self._clipped(np.hstack((self.dbound_dmuS.flatten(), self.dbound_dZtheta))) + return np.hstack((self.dbound_dmuS.flatten(), self.dbound_dZtheta)) def plot_latent(self, *args, **kwargs): return plot_latent.plot_latent_indices(self, *args, **kwargs) @@ -256,275 +193,6 @@ class BayesianGPLVM(SparseGP, GPLVM): fig.tight_layout(h_pad=.01) # , rect=(0, 0, 1, .95)) return fig - def __getstate__(self): - return (self.likelihood, self.input_dim, self.X, self.X_variance, - self.init, self.num_inducing, self.Z, self.kern, - self.oldpsave, self._debug) - - def __setstate__(self, state): - self.__init__(*state) - - def _debug_filter_params(self, x): - start, end = 0, self.X.size, - X = x[start:end].reshape(self.num_data, self.input_dim) - start, end = end, end + self.X_variance.size - X_v = x[start:end].reshape(self.num_data, self.input_dim) - start, end = end, end + (self.num_inducing * self.input_dim) - Z = x[start:end].reshape(self.num_inducing, self.input_dim) - start, end = end, end + self.input_dim - theta = x[start:] - return X, X_v, Z, theta - - - def _debug_get_axis(self, figs): - if figs[-1].axes: - ax1 = figs[-1].axes[0] - ax1.cla() - else: - ax1 = figs[-1].add_subplot(111) - return ax1 - - def _debug_plot(self): - assert self._debug, "must enable _debug, to debug-plot" - import pylab -# from mpl_toolkits.mplot3d import Axes3D - figs = [pylab.figure('BGPLVM DEBUG', figsize=(12, 4))] -# fig.clf() - - # log like -# splotshape = (6, 4) -# ax1 = pylab.subplot2grid(splotshape, (0, 0), 1, 4) - ax1 = self._debug_get_axis(figs) - 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})}] - - param_dict = dict(self._savedparams) - gradient_dict = dict(self._savedgradients) -# kmm_dict = dict(self._savedpsiKmm) - iters = np.array(param_dict.keys()) - ABCD_dict = np.array(self._savedABCD) - self.showing = 0 - -# ax2 = pylab.subplot2grid(splotshape, (1, 0), 2, 4) - figs.append(pylab.figure("BGPLVM DEBUG X", figsize=(12, 4))) - ax2 = self._debug_get_axis(figs) - ax2.text(.5, .5, r"$\mathbf{X}$", alpha=.5, transform=ax2.transAxes, - ha='center', va='center') - figs[-1].canvas.draw() - figs[-1].tight_layout(rect=(0, 0, 1, .86)) -# ax3 = pylab.subplot2grid(splotshape, (3, 0), 2, 4, sharex=ax2) - figs.append(pylab.figure("BGPLVM DEBUG S", figsize=(12, 4))) - ax3 = self._debug_get_axis(figs) - ax3.text(.5, .5, r"$\mathbf{S}$", alpha=.5, transform=ax3.transAxes, - ha='center', va='center') - figs[-1].canvas.draw() - figs[-1].tight_layout(rect=(0, 0, 1, .86)) -# ax4 = pylab.subplot2grid(splotshape, (5, 0), 2, 2) - figs.append(pylab.figure("BGPLVM DEBUG Z", figsize=(6, 4))) - ax4 = self._debug_get_axis(figs) - ax4.text(.5, .5, r"$\mathbf{Z}$", alpha=.5, transform=ax4.transAxes, - ha='center', va='center') - figs[-1].canvas.draw() - figs[-1].tight_layout(rect=(0, 0, 1, .86)) -# ax5 = pylab.subplot2grid(splotshape, (5, 2), 2, 2) - figs.append(pylab.figure("BGPLVM DEBUG theta", figsize=(6, 4))) - ax5 = self._debug_get_axis(figs) - ax5.text(.5, .5, r"${\theta}$", alpha=.5, transform=ax5.transAxes, - ha='center', va='center') - figs[-1].canvas.draw() - figs[-1].tight_layout(rect=(.15, 0, 1, .86)) -# figs.append(pylab.figure("BGPLVM DEBUG Kmm", figsize=(12, 6))) -# fig = figs[-1] -# ax6 = fig.add_subplot(121) -# ax6.text(.5, .5, r"${\mathbf{K}_{mm}}$", color='magenta', alpha=.5, transform=ax6.transAxes, -# ha='center', va='center') -# ax7 = fig.add_subplot(122) -# ax7.text(.5, .5, r"${\frac{dL}{dK_{mm}}}$", color='magenta', alpha=.5, transform=ax7.transAxes, -# ha='center', va='center') - figs.append(pylab.figure("BGPLVM DEBUG Kmm", figsize=(12, 6))) - fig = figs[-1] - ax8 = fig.add_subplot(121) - ax8.text(.5, .5, r"${\mathbf{A,B,C,input_dim}}$", color='k', alpha=.5, transform=ax8.transAxes, - ha='center', va='center') - ax8.plot(ABCD_dict[:, 0], ABCD_dict[:, 1], label='A') - ax8.plot(ABCD_dict[:, 0], ABCD_dict[:, 2], label='B') - ax8.plot(ABCD_dict[:, 0], ABCD_dict[:, 3], label='C') - ax8.plot(ABCD_dict[:, 0], ABCD_dict[:, 4], label='input_dim') - ax8.legend() - figs[-1].canvas.draw() - figs[-1].tight_layout(rect=(.15, 0, 1, .86)) - - X, S, Z, theta = self._debug_filter_params(param_dict[self.showing]) - Xg, Sg, Zg, thetag = self._debug_filter_params(gradient_dict[self.showing]) -# Xg, Sg, Zg, thetag = -Xg, -Sg, -Zg, -thetag - - quiver_units = 'xy' - quiver_scale = 1 - quiver_scale_units = 'xy' - Xlatentplts = ax2.plot(X, ls="-", marker="x") - colors = colorConverter.to_rgba_array([p.get_color() for p in Xlatentplts], .4) - Ulatent = np.zeros_like(X) - xlatent = np.tile(np.arange(0, X.shape[0])[:, None], X.shape[1]) - Xlatentgrads = ax2.quiver(xlatent, X, Ulatent, Xg, color=colors, - units=quiver_units, scale_units=quiver_scale_units, - scale=quiver_scale) - - Slatentplts = ax3.plot(S, ls="-", marker="x") - Slatentgrads = ax3.quiver(xlatent, S, Ulatent, Sg, color=colors, - units=quiver_units, scale_units=quiver_scale_units, - scale=quiver_scale) - ax3.set_ylim(0, 1.) - - xZ = np.tile(np.arange(0, Z.shape[0])[:, None], Z.shape[1]) - UZ = np.zeros_like(Z) - Zplts = ax4.plot(Z, ls="-", marker="x") - Zgrads = ax4.quiver(xZ, Z, UZ, Zg, color=colors, - units=quiver_units, scale_units=quiver_scale_units, - scale=quiver_scale) - - xtheta = np.arange(len(theta)) - Utheta = np.zeros_like(theta) - thetaplts = ax5.bar(xtheta - .4, theta, color=colors) - thetagrads = ax5.quiver(xtheta, theta, Utheta, thetag, color=colors, - units=quiver_units, scale_units=quiver_scale_units, - scale=quiver_scale, - edgecolors=('k',), linewidths=[1]) - pylab.setp(thetaplts, zorder=0) - pylab.setp(thetagrads, zorder=10) - ax5.set_xticks(np.arange(len(theta))) - ax5.set_xticklabels(self._get_param_names()[-len(theta):], rotation=17) - -# imkmm = ax6.imshow(kmm_dict[self.showing][0]) -# from mpl_toolkits.axes_grid1 import make_axes_locatable -# divider = make_axes_locatable(ax6) -# caxkmm = divider.append_axes("right", "5%", pad="1%") -# cbarkmm = pylab.colorbar(imkmm, cax=caxkmm) -# -# imkmmdl = ax7.imshow(kmm_dict[self.showing][1]) -# divider = make_axes_locatable(ax7) -# caxkmmdl = divider.append_axes("right", "5%", pad="1%") -# cbarkmmdl = pylab.colorbar(imkmmdl, cax=caxkmmdl) - -# input_dimleg = ax1.legend(Xlatentplts, [r"$input_dim_{}$".format(i + 1) for i in range(self.input_dim)], -# loc=3, ncol=self.input_dim, bbox_to_anchor=(0, 1.15, 1, 1.15), -# borderaxespad=0, mode="expand") - ax2.legend(Xlatentplts, [r"$input_dim_{}$".format(i + 1) for i in range(self.input_dim)], - loc=3, ncol=self.input_dim, bbox_to_anchor=(0, 1.1, 1, 1.1), - borderaxespad=0, mode="expand") - ax3.legend(Xlatentplts, [r"$input_dim_{}$".format(i + 1) for i in range(self.input_dim)], - loc=3, ncol=self.input_dim, bbox_to_anchor=(0, 1.1, 1, 1.1), - borderaxespad=0, mode="expand") - ax4.legend(Xlatentplts, [r"$input_dim_{}$".format(i + 1) for i in range(self.input_dim)], - loc=3, ncol=self.input_dim, bbox_to_anchor=(0, 1.1, 1, 1.1), - borderaxespad=0, mode="expand") - ax5.legend(Xlatentplts, [r"$input_dim_{}$".format(i + 1) for i in range(self.input_dim)], - loc=3, ncol=self.input_dim, bbox_to_anchor=(0, 1.1, 1, 1.1), - borderaxespad=0, mode="expand") - Lleg = ax1.legend() - Lleg.draggable() -# ax1.add_artist(input_dimleg) - - 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: -# 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: -# f.canvas.draw() -# f.tight_layout(box=(0, .15, 1, .9)) -# # pylab.draw() -# # pylab.tight_layout(box=(0, .1, 1, .9)) -# except: -# pass - - # parameter changes - # ax2 = pylab.subplot2grid((4, 1), (1, 0), 3, 1, projection='3d') - button_options = [0, 0] # [0]: clicked -- [1]: dragged - - def update_plots(event): - if button_options[0] and not button_options[1]: -# event.button, event.x, event.y, event.xdata, event.ydata) - tmp = np.abs(iters - event.xdata) - closest_hit = iters[tmp == tmp.min()][0] - - if closest_hit != self.showing: - self.showing = closest_hit - # print closest_hit, iters, event.xdata - - indicatorLL.set_data(self.showing, kllls[self.showing, 1] - kllls[self.showing, 2]) - indicatorKL.set_data(self.showing, kllls[self.showing, 2]) - indicatorL.set_data(self.showing, kllls[self.showing, 1]) - - X, S, Z, theta = self._debug_filter_params(param_dict[self.showing]) - Xg, Sg, Zg, thetag = self._debug_filter_params(gradient_dict[self.showing]) -# Xg, Sg, Zg, thetag = -Xg, -Sg, -Zg, -thetag - - for i, Xlatent in enumerate(Xlatentplts): - Xlatent.set_ydata(X[:, i]) - Xlatentgrads.set_offsets(np.array([xlatent.ravel(), X.ravel()]).T) - Xlatentgrads.set_UVC(Ulatent, Xg) - - for i, Slatent in enumerate(Slatentplts): - Slatent.set_ydata(S[:, i]) - Slatentgrads.set_offsets(np.array([xlatent.ravel(), S.ravel()]).T) - Slatentgrads.set_UVC(Ulatent, Sg) - - for i, Zlatent in enumerate(Zplts): - Zlatent.set_ydata(Z[:, i]) - Zgrads.set_offsets(np.array([xZ.ravel(), Z.ravel()]).T) - Zgrads.set_UVC(UZ, Zg) - - for p, t in zip(thetaplts, theta): - p.set_height(t) - thetagrads.set_offsets(np.array([xtheta.ravel(), theta.ravel()]).T) - thetagrads.set_UVC(Utheta, thetag) - -# imkmm.set_data(kmm_dict[self.showing][0]) -# imkmm.autoscale() -# cbarkmm.update_normal(imkmm) -# -# imkmmdl.set_data(kmm_dict[self.showing][1]) -# imkmmdl.autoscale() -# cbarkmmdl.update_normal(imkmmdl) - - ax2.relim() - # ax3.relim() - ax4.relim() - ax5.relim() - ax2.autoscale() - # ax3.autoscale() - ax4.autoscale() - ax5.autoscale() - - [fig.canvas.draw() for fig in figs] - button_options[0] = 0 - button_options[1] = 0 - - def onclick(event): - if event.inaxes is ax1 and event.button == 1: - button_options[0] = 1 - def motion(event): - if button_options[0]: - button_options[1] = 1 - - cidr = figs[0].canvas.mpl_connect('button_release_event', update_plots) - cidp = figs[0].canvas.mpl_connect('button_press_event', onclick) - cidd = figs[0].canvas.mpl_connect('motion_notify_event', motion) - - return ax1, ax2, ax3, ax4, ax5 # , ax6, ax7 - - - - def latent_cost_and_grad(mu_S, kern, Z, dL_dpsi0, dL_dpsi1, dL_dpsi2): """ objective function for fitting the latent variables for test points diff --git a/GPy/models/gplvm.py b/GPy/models/gplvm.py index e602a59a..34b7fb7b 100644 --- a/GPy/models/gplvm.py +++ b/GPy/models/gplvm.py @@ -1,4 +1,4 @@ -### Copyright (c) 2012, GPy authors (see AUTHORS.txt). +# ## Copyright (c) 2012, GPy authors (see AUTHORS.txt). # Licensed under the BSD 3-clause license (see LICENSE.txt) @@ -26,11 +26,11 @@ class GPLVM(GP): :type init: 'PCA'|'random' """ - def __init__(self, Y, input_dim, init='PCA', X = None, kernel=None, normalize_Y=False): + def __init__(self, Y, input_dim, init='PCA', X=None, kernel=None, normalize_Y=False): if X is None: X = self.initialise_latent(init, input_dim, Y) if kernel is None: - kernel = kern.rbf(input_dim, ARD=input_dim>1) + kern.bias(input_dim, np.exp(-2)) + kern.white(input_dim, np.exp(-2)) + kernel = kern.rbf(input_dim, ARD=input_dim > 1) + kern.bias(input_dim, np.exp(-2)) + kern.white(input_dim, np.exp(-2)) likelihood = Gaussian(Y, normalize=normalize_Y) GP.__init__(self, X, likelihood, kernel, normalize_X=False) self._set_params(self._get_params()) @@ -42,26 +42,26 @@ class GPLVM(GP): return np.random.randn(Y.shape[0], input_dim) def _get_param_names(self): - return sum([['X_%i_%i'%(n,q) for q in range(self.input_dim)] for n in range(self.num_data)],[]) + GP._get_param_names(self) + return sum([['X_%i_%i' % (n, q) for q in range(self.input_dim)] for n in range(self.num_data)], []) + GP._get_param_names(self) def _get_params(self): return np.hstack((self.X.flatten(), GP._get_params(self))) - def _set_params(self,x): - self.X = x[:self.num_data*self.input_dim].reshape(self.num_data,self.input_dim).copy() + def _set_params(self, x): + self.X = x[:self.num_data * self.input_dim].reshape(self.num_data, self.input_dim).copy() GP._set_params(self, x[self.X.size:]) def _log_likelihood_gradients(self): - dL_dX = 2.*self.kern.dK_dX(self.dL_dK,self.X) + dL_dX = 2.*self.kern.dK_dX(self.dL_dK, self.X) - return np.hstack((dL_dX.flatten(),GP._log_likelihood_gradients(self))) + return np.hstack((dL_dX.flatten(), GP._log_likelihood_gradients(self))) def plot(self): - assert self.likelihood.Y.shape[1]==2 - pb.scatter(self.likelihood.Y[:,0],self.likelihood.Y[:,1],40,self.X[:,0].copy(),linewidth=0,cmap=pb.cm.jet) - Xnew = np.linspace(self.X.min(),self.X.max(),200)[:,None] + assert self.likelihood.Y.shape[1] == 2 + pb.scatter(self.likelihood.Y[:, 0], self.likelihood.Y[:, 1], 40, self.X[:, 0].copy(), linewidth=0, cmap=pb.cm.jet) + Xnew = np.linspace(self.X.min(), self.X.max(), 200)[:, None] mu, var, upper, lower = self.predict(Xnew) - pb.plot(mu[:,0], mu[:,1],'k',linewidth=1.5) + pb.plot(mu[:, 0], mu[:, 1], 'k', linewidth=1.5) def plot_latent(self, *args, **kwargs): return util.plot_latent.plot_latent(self, *args, **kwargs) diff --git a/GPy/models/mrd.py b/GPy/models/mrd.py index 75c6fee9..febaa750 100644 --- a/GPy/models/mrd.py +++ b/GPy/models/mrd.py @@ -61,12 +61,14 @@ class MRD(Model): assert not ('kernel' in kw), "pass kernels through `kernels` argument" self.input_dim = input_dim - self.num_inducing = num_inducing self._debug = _debug + self.num_inducing = num_inducing self._init = True X = self._init_X(initx, likelihood_or_Y_list) Z = self._init_Z(initz, X) + self.num_inducing = Z.shape[0] # ensure M==N if M>N + self.bgplvms = [BayesianGPLVM(l, input_dim=input_dim, kernel=k, X=X, Z=Z, num_inducing=self.num_inducing, **kw) for l, k in zip(likelihood_or_Y_list, kernels)] del self._init @@ -75,12 +77,35 @@ class MRD(Model): self.nparams = nparams.cumsum() self.num_data = self.gref.num_data + self.NQ = self.num_data * self.input_dim self.MQ = self.num_inducing * self.input_dim Model.__init__(self) self._set_params(self._get_params()) + def __getstate__(self): + return [self.names, + self.bgplvms, + self.gref, + self.nparams, + self.input_dim, + self.num_inducing, + self.num_data, + self.NQ, + self.MQ] + + def __setstate__(self, state): + self.MQ = state.pop() + self.NQ = state.pop() + self.num_data = state.pop() + self.num_inducing = state.pop() + self.input_dim = state.pop() + self.nparams = state.pop() + self.gref = state.pop() + self.bgplvms = state.pop() + self.names = state.pop() + @property def X(self): return self.gref.X @@ -257,7 +282,7 @@ class MRD(Model): def _handle_plotting(self, fignum, axes, plotf): if axes is None: - fig = pylab.figure(num=fignum, figsize=(4 * len(self.bgplvms), 3)) + fig = pylab.figure(num=fignum) for i, g in enumerate(self.bgplvms): if axes is None: ax = fig.add_subplot(1, len(self.bgplvms), i + 1) @@ -285,11 +310,11 @@ class MRD(Model): return fig def plot_scales(self, fignum=None, ax=None, *args, **kwargs): - fig = self._handle_plotting(fignum, ax, lambda i, g, ax: g.kern.plot_ARD(ax=ax, *args, **kwargs)) + fig = self._handle_plotting(fignum, ax, lambda i, g, ax: g.kern.plot_ARD(ax=ax, title=r'$Y_{}$'.format(i), *args, **kwargs)) return fig def plot_latent(self, fignum=None, ax=None, *args, **kwargs): - fig = self._handle_plotting(fignum, ax, lambda i, g, ax: g.plot_latent(ax=ax, *args, **kwargs)) + fig = self.gref.plot_X_1d(*args, **kwargs) # self._handle_plotting(fignum, ax, lambda i, g, ax: g.plot_latent(ax=ax, *args, **kwargs)) return fig def _debug_plot(self): From 05e8e75c5871df8502730d6ada69eaae0babdb8e Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Tue, 25 Jun 2013 18:01:18 +0100 Subject: [PATCH 002/135] pickling unified with __getstate__ and __setstate__ --- GPy/core/gp.py | 18 +++++++++--------- GPy/core/gp_base.py | 3 +-- GPy/kern/kern.py | 22 ++++++++++++++++++++++ GPy/models/bayesian_gplvm.py | 2 +- GPy/models/mrd.py | 3 ++- 5 files changed, 35 insertions(+), 13 deletions(-) diff --git a/GPy/core/gp.py b/GPy/core/gp.py index e3bbc85d..6587fdd5 100644 --- a/GPy/core/gp.py +++ b/GPy/core/gp.py @@ -6,7 +6,7 @@ import numpy as np import pylab as pb from .. import kern from ..util.linalg import pdinv, mdot, tdot, dpotrs, dtrtrs -#from ..util.plot import gpplot, Tango +# from ..util.plot import gpplot, Tango from ..likelihoods import EP from gp_base import GPBase @@ -46,12 +46,12 @@ class GP(GPBase): # the gradient of the likelihood wrt the covariance matrix if self.likelihood.YYT is None: - #alpha = np.dot(self.Ki, self.likelihood.Y) - alpha,_ = dpotrs(self.L, self.likelihood.Y,lower=1) + # alpha = np.dot(self.Ki, self.likelihood.Y) + alpha, _ = dpotrs(self.L, self.likelihood.Y, lower=1) self.dL_dK = 0.5 * (tdot(alpha) - self.output_dim * self.Ki) else: - #tmp = mdot(self.Ki, self.likelihood.YYT, self.Ki) + # tmp = mdot(self.Ki, self.likelihood.YYT, self.Ki) tmp, _ = dpotrs(self.L, np.asfortranarray(self.likelihood.YYT), lower=1) tmp, _ = dpotrs(self.L, np.asfortranarray(tmp.T), lower=1) self.dL_dK = 0.5 * (tmp - self.output_dim * self.Ki) @@ -72,7 +72,7 @@ class GP(GPBase): """ self.likelihood.restart() self.likelihood.fit_full(self.kern.K(self.X)) - self._set_params(self._get_params()) # update the GP + self._set_params(self._get_params()) # update the GP def _model_fit_term(self): """ @@ -81,7 +81,7 @@ class GP(GPBase): if self.likelihood.YYT is None: tmp, _ = dtrtrs(self.L, np.asfortranarray(self.likelihood.Y), lower=1) return -0.5 * np.sum(np.square(tmp)) - #return -0.5 * np.sum(np.square(np.dot(self.Li, self.likelihood.Y))) + # return -0.5 * np.sum(np.square(np.dot(self.Li, self.likelihood.Y))) else: return -0.5 * np.sum(np.multiply(self.Ki, self.likelihood.YYT)) @@ -104,13 +104,13 @@ class GP(GPBase): """ return np.hstack((self.kern.dK_dtheta(dL_dK=self.dL_dK, X=self.X), self.likelihood._gradients(partial=np.diag(self.dL_dK)))) - def _raw_predict(self, _Xnew, which_parts='all', full_cov=False,stop=False): + def _raw_predict(self, _Xnew, which_parts='all', full_cov=False, stop=False): """ Internal helper function for making predictions, does not account for normalization or likelihood """ - Kx = self.kern.K(_Xnew,self.X,which_parts=which_parts).T - #KiKx = np.dot(self.Ki, Kx) + Kx = self.kern.K(_Xnew, self.X, which_parts=which_parts).T + # KiKx = np.dot(self.Ki, Kx) KiKx, _ = dpotrs(self.L, np.asfortranarray(Kx), lower=1) mu = np.dot(KiKx.T, self.likelihood.Y) if full_cov: diff --git a/GPy/core/gp_base.py b/GPy/core/gp_base.py index a1d182d6..d4f63295 100644 --- a/GPy/core/gp_base.py +++ b/GPy/core/gp_base.py @@ -29,7 +29,7 @@ class GPBase(Model): self._Xscale = np.ones((1, self.input_dim)) super(GPBase, self).__init__() - #Model.__init__(self) + # Model.__init__(self) # All leaf nodes should call self._set_params(self._get_params()) at # the end @@ -57,7 +57,6 @@ class GPBase(Model): self.num_data = state.pop() self.X = state.pop() Model.__setstate__(self, state) - self._set_params(self._get_params()) def plot_f(self, samples=0, plot_limits=None, which_data='all', which_parts='all', resolution=None, full_cov=False, fignum=None, ax=None): """ diff --git a/GPy/kern/kern.py b/GPy/kern/kern.py index 2c9cc154..aa916940 100644 --- a/GPy/kern/kern.py +++ b/GPy/kern/kern.py @@ -43,6 +43,28 @@ class kern(Parameterised): Parameterised.__init__(self) + def __getstate__(self): + """ + Get the current state of the class, + here just all the indices, rest can get recomputed + """ + return Parameterised.__getstate__(self) + [self.parts, + self.Nparts, + self.num_params, + self.input_dim, + self.input_slices, + self.param_slices + ] + + def __setstate__(self, state): + self.param_slices = state.pop() + self.input_slices = state.pop() + self.input_dim = state.pop() + self.num_params = state.pop() + self.Nparts = state.pop() + self.parts = state.pop() + Parameterised.__setstate__(self, state) + def plot_ARD(self, fignum=None, ax=None, title=None): """If an ARD kernel is present, it bar-plots the ARD parameters""" diff --git a/GPy/models/bayesian_gplvm.py b/GPy/models/bayesian_gplvm.py index 7fddfbfd..8ea96405 100644 --- a/GPy/models/bayesian_gplvm.py +++ b/GPy/models/bayesian_gplvm.py @@ -53,7 +53,7 @@ class BayesianGPLVM(SparseGP, GPLVM): Get the current state of the class, here just all the indices, rest can get recomputed """ - return [self.init] + SparseGP.__getstate__(self) + return SparseGP.__getstate__(self) + [self.init] def __setstate__(self, state): self.init = state.pop() diff --git a/GPy/models/mrd.py b/GPy/models/mrd.py index 774face8..32bd2930 100644 --- a/GPy/models/mrd.py +++ b/GPy/models/mrd.py @@ -85,7 +85,7 @@ class MRD(Model): self.ensure_default_constraints() def __getstate__(self): - return [self.names, + return Model.__getstate__(self) + [self.names, self.bgplvms, self.gref, self.nparams, @@ -105,6 +105,7 @@ class MRD(Model): self.gref = state.pop() self.bgplvms = state.pop() self.names = state.pop() + Model.__setstate__(self, state) @property def X(self): From f5effb8cb60c8bc7a39b87b321737cf36ff845e3 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Wed, 26 Jun 2013 16:48:48 +0100 Subject: [PATCH 003/135] added robust pickling, switches to old behaviour, if get/setstate not implemented --- GPy/core/__init__.py | 2 +- GPy/core/gp.py | 7 +- GPy/core/gp_base.py | 8 +- GPy/core/model.py | 23 +-- .../{parameterised.py => parameterized.py} | 77 ++++----- GPy/core/sparse_gp.py | 8 +- GPy/core/svigp.py | 8 + GPy/kern/kern.py | 14 +- GPy/models/bayesian_gplvm.py | 8 +- GPy/models/gp_regression.py | 13 +- GPy/models/mrd.py | 8 +- GPy/models/sparse_gp_classification.py | 13 +- GPy/models/sparse_gp_regression.py | 10 ++ GPy/models/sparse_gplvm.py | 8 + GPy/models/svigp_regression.py | 8 + GPy/models/warped_gp.py | 8 + doc/GPy.core.rst | 60 ++++++- doc/GPy.examples.rst | 16 +- doc/GPy.inference.rst | 30 +++- doc/GPy.kern.rst | 161 +----------------- doc/GPy.likelihoods.rst | 12 +- doc/GPy.models.rst | 54 +++--- doc/GPy.testing.rst | 48 ++++++ doc/GPy.util.rst | 56 ++++++ doc/conf.py | 8 +- doc/index.rst | 1 + doc/tuto_interacting_with_models.rst | 6 +- 27 files changed, 392 insertions(+), 283 deletions(-) rename GPy/core/{parameterised.py => parameterized.py} (89%) diff --git a/GPy/core/__init__.py b/GPy/core/__init__.py index e9e049b0..8b040984 100644 --- a/GPy/core/__init__.py +++ b/GPy/core/__init__.py @@ -2,7 +2,7 @@ # Licensed under the BSD 3-clause license (see LICENSE.txt) from model import * -from parameterised import * +from parameterized import * import priors from gp import GP from sparse_gp import SparseGP diff --git a/GPy/core/gp.py b/GPy/core/gp.py index 6587fdd5..a0e60bcc 100644 --- a/GPy/core/gp.py +++ b/GPy/core/gp.py @@ -31,8 +31,11 @@ class GP(GPBase): GPBase.__init__(self, X, likelihood, kernel, normalize_X=normalize_X) self._set_params(self._get_params()) - def __setstate__(self, state): - GPBase.__setstate__(self, state) + def getstate(self): + return GPBase.getstate(self) + + def setstate(self, state): + GPBase.setstate(self, state) self._set_params(self._get_params()) def _set_params(self, p): diff --git a/GPy/core/gp_base.py b/GPy/core/gp_base.py index d4f63295..2a0ba7c1 100644 --- a/GPy/core/gp_base.py +++ b/GPy/core/gp_base.py @@ -33,12 +33,12 @@ class GPBase(Model): # All leaf nodes should call self._set_params(self._get_params()) at # the end - def __getstate__(self): + def getstate(self): """ Get the current state of the class, here just all the indices, rest can get recomputed """ - return Model.__getstate__(self) + [self.X, + return Model.getstate(self) + [self.X, self.num_data, self.input_dim, self.kern, @@ -47,7 +47,7 @@ class GPBase(Model): self._Xoffset, self._Xscale] - def __setstate__(self, state): + def setstate(self, state): self._Xscale = state.pop() self._Xoffset = state.pop() self.output_dim = state.pop() @@ -56,7 +56,7 @@ class GPBase(Model): self.input_dim = state.pop() self.num_data = state.pop() self.X = state.pop() - Model.__setstate__(self, state) + Model.setstate(self, state) def plot_f(self, samples=0, plot_limits=None, which_data='all', which_parts='all', resolution=None, full_cov=False, fignum=None, ax=None): """ diff --git a/GPy/core/model.py b/GPy/core/model.py index 3c5c8419..fe5d5181 100644 --- a/GPy/core/model.py +++ b/GPy/core/model.py @@ -6,18 +6,18 @@ from .. import likelihoods from ..inference import optimization from ..util.linalg import jitchol from GPy.util.misc import opt_wrapper -from parameterised import Parameterised +from parameterized import Parameterized import multiprocessing as mp import numpy as np from GPy.core.domains import POSITIVE, REAL from numpy.linalg.linalg import LinAlgError # import numdifftools as ndt -class Model(Parameterised): +class Model(Parameterized): _fail_count = 0 # Count of failed optimization steps (see objective) _allowed_failures = 10 # number of allowed failures def __init__(self): - Parameterised.__init__(self) + Parameterized.__init__(self) self.priors = None self.optimization_runs = [] self.sampling_runs = [] @@ -32,24 +32,27 @@ class Model(Parameterised): def _log_likelihood_gradients(self): raise NotImplementedError, "this needs to be implemented to use the Model class" - def __getstate__(self): + def getstate(self): """ - Get the current state of the class, - here just all the indices, rest can get recomputed + Get the current state of the class. + + Inherited from Parameterized, so add those parameters to the state """ - return Parameterised.__getstate__(self) + \ + return Parameterized.getstate(self) + \ [self.priors, self.optimization_runs, self.sampling_runs, self.preferred_optimizer] - def __setstate__(self, state): + def setstate(self, state): """ set state from previous call to getstate + + call Parameterized with the rest of the state """ self.preferred_optimizer = state.pop() self.sampling_runs = state.pop() self.optimization_runs = state.pop() self.priors = state.pop() - Parameterised.__setstate__(self, state) + Parameterized.setstate(self, state) def set_prior(self, regexp, what): """ @@ -355,7 +358,7 @@ class Model(Parameterised): return 0.5 * self._get_params().size * np.log(2 * np.pi) + self.log_likelihood() - hld def __str__(self): - s = Parameterised.__str__(self).split('\n') + s = Parameterized.__str__(self).split('\n') # add priors to the string if self.priors is not None: strs = [str(p) if p is not None else '' for p in self.priors] diff --git a/GPy/core/parameterised.py b/GPy/core/parameterized.py similarity index 89% rename from GPy/core/parameterised.py rename to GPy/core/parameterized.py index 13467fdf..0f5ef905 100644 --- a/GPy/core/parameterised.py +++ b/GPy/core/parameterized.py @@ -9,7 +9,7 @@ import cPickle import warnings import transformations -class Parameterised(object): +class Parameterized(object): def __init__(self): """ This is the base class for model and kernel. Mostly just handles tieing and constraining of parameters @@ -20,19 +20,40 @@ class Parameterised(object): self.constrained_indices = [] self.constraints = [] - def pickle(self, filename, protocol= -1): - f = file(filename, 'w') - cPickle.dump(self, f, protocol) - f.close() + def pickle(self, filename, protocol=None): + if protocol is None: + if self._has_get_set_state(): + protocol = 0 + else: + protocol = -1 + with open(filename, 'w') as f: + cPickle.dump(self, f, protocol) def copy(self): """Returns a (deep) copy of the current model """ return copy.deepcopy(self) def __getstate__(self): + if self._has_get_set_state(): + return self.getstate() + return self.__dict__ + + def __setstate__(self, state): + if self._has_get_set_state(): + return self.setstate(state) + self.__dict__ = state + + def _has_get_set_state(self): + return 'getstate' in vars(self.__class__) and 'setstate' in vars(self.__class__) + + def getstate(self): """ Get the current state of the class, here just all the indices, rest can get recomputed + + For inheriting from Parameterized: + Allways append the state of the inherited object + and call down to the inherited object in setstate!! """ return [self.tied_indices, self.fixed_indices, @@ -40,54 +61,13 @@ class Parameterised(object): self.constrained_indices, self.constraints] - def __setstate__(self, state): + def setstate(self, state): self.constraints = state.pop() self.constrained_indices = state.pop() self.fixed_values = state.pop() self.fixed_indices = state.pop() self.tied_indices = state.pop() - @property - def params(self): - """ - Returns a **copy** of parameters in non transformed space - - :see_also: :py:func:`GPy.core.Parameterised.params_transformed` - """ - return self._get_params() - - @params.setter - def params(self, params): - self._set_params(params) - - @property - def params_transformed(self): - """ - Returns a **copy** of parameters in transformed space - - :see_also: :py:func:`GPy.core.Parameterised.params` - """ - return self._get_params_transformed() - - @params_transformed.setter - def params_transformed(self, params): - self._set_params_transformed(params) - - _get_set_deprecation = """get and set methods wont be available at next minor release - in the next releases you will get and set with following syntax: - Assume m is a model class: - print m['var'] # > prints all parameters matching 'var' - m['var'] = 2. # > sets all parameters matching 'var' to 2. - m['var'] = # > sets parameters matching 'var' to - """ - def get(self, regexp): - warnings.warn(self._get_set_deprecation, FutureWarning, stacklevel=2) - return self[regexp] - - def set(self, regexp, val): - warnings.warn(self._get_set_deprecation, FutureWarning, stacklevel=2) - self[regexp] = val - def __getitem__(self, regexp, return_names=False): """ Get a model parameter by name. The name is applied as a regular @@ -120,6 +100,9 @@ class Parameterised(object): raise AttributeError, "no parameter matches %s" % name def tie_params(self, regexp): + """ + Tie (all!) parameters matching the regular expression `regexp`. + """ matches = self.grep_param_names(regexp) assert matches.size > 0, "need at least something to tie together" if len(self.tied_indices): diff --git a/GPy/core/sparse_gp.py b/GPy/core/sparse_gp.py index f4416cf2..93ba5d7d 100644 --- a/GPy/core/sparse_gp.py +++ b/GPy/core/sparse_gp.py @@ -50,22 +50,22 @@ class SparseGP(GPBase): if self.has_uncertain_inputs: self.X_variance /= np.square(self._Xscale) - def __getstate__(self): + def getstate(self): """ Get the current state of the class, here just all the indices, rest can get recomputed """ - return GPBase.__getstate__(self) + [self.Z, + return GPBase.getstate(self) + [self.Z, self.num_inducing, self.has_uncertain_inputs, self.X_variance] - def __setstate__(self, state): + def setstate(self, state): self.X_variance = state.pop() self.has_uncertain_inputs = state.pop() self.num_inducing = state.pop() self.Z = state.pop() - GPBase.__setstate__(self, state) + GPBase.setstate(self, state) def _compute_kernel_matrices(self): # kernel computations, using BGPLVM notation diff --git a/GPy/core/svigp.py b/GPy/core/svigp.py index 1db0e26f..5d6bcd8b 100644 --- a/GPy/core/svigp.py +++ b/GPy/core/svigp.py @@ -91,6 +91,14 @@ class SVIGP(GPBase): self._param_steplength_trace = [] self._vb_steplength_trace = [] + def getstate(self): + return GPBase.getstate(self) + + + def setstate(self, state): + return GPBase.setstate(self, state) + + def _compute_kernel_matrices(self): # kernel computations, using BGPLVM notation self.Kmm = self.kern.K(self.Z) diff --git a/GPy/kern/kern.py b/GPy/kern/kern.py index aa916940..176abbaf 100644 --- a/GPy/kern/kern.py +++ b/GPy/kern/kern.py @@ -3,12 +3,12 @@ import numpy as np import pylab as pb -from ..core.parameterised import Parameterised +from ..core.parameterized import Parameterized from parts.kernpart import Kernpart import itertools from parts.prod import Prod as prod -class kern(Parameterised): +class kern(Parameterized): def __init__(self, input_dim, parts=[], input_slices=None): """ This is the main kernel class for GPy. It handles multiple (additive) kernel functions, and keeps track of variaous things like which parameters live where. @@ -41,14 +41,14 @@ class kern(Parameterised): self.compute_param_slices() - Parameterised.__init__(self) + Parameterized.__init__(self) - def __getstate__(self): + def getstate(self): """ Get the current state of the class, here just all the indices, rest can get recomputed """ - return Parameterised.__getstate__(self) + [self.parts, + return Parameterized.getstate(self) + [self.parts, self.Nparts, self.num_params, self.input_dim, @@ -56,14 +56,14 @@ class kern(Parameterised): self.param_slices ] - def __setstate__(self, state): + def setstate(self, state): self.param_slices = state.pop() self.input_slices = state.pop() self.input_dim = state.pop() self.num_params = state.pop() self.Nparts = state.pop() self.parts = state.pop() - Parameterised.__setstate__(self, state) + Parameterized.setstate(self, state) def plot_ARD(self, fignum=None, ax=None, title=None): diff --git a/GPy/models/bayesian_gplvm.py b/GPy/models/bayesian_gplvm.py index 8ea96405..916c307d 100644 --- a/GPy/models/bayesian_gplvm.py +++ b/GPy/models/bayesian_gplvm.py @@ -48,16 +48,16 @@ class BayesianGPLVM(SparseGP, GPLVM): SparseGP.__init__(self, X, likelihood, kernel, Z=Z, X_variance=X_variance, **kwargs) self.ensure_default_constraints() - def __getstate__(self): + def getstate(self): """ Get the current state of the class, here just all the indices, rest can get recomputed """ - return SparseGP.__getstate__(self) + [self.init] + return SparseGP.getstate(self) + [self.init] - def __setstate__(self, state): + def setstate(self, state): self.init = state.pop() - SparseGP.__setstate__(self, state) + SparseGP.setstate(self, state) def _get_param_names(self): X_names = sum([['X_%i_%i' % (n, q) for q in range(self.input_dim)] for n in range(self.num_data)], []) diff --git a/GPy/models/gp_regression.py b/GPy/models/gp_regression.py index db5d21b2..615e6618 100644 --- a/GPy/models/gp_regression.py +++ b/GPy/models/gp_regression.py @@ -25,11 +25,20 @@ class GPRegression(GP): """ - def __init__(self,X,Y,kernel=None,normalize_X=False,normalize_Y=False): + def __init__(self, X, Y, kernel=None, normalize_X=False, normalize_Y=False): if kernel is None: kernel = kern.rbf(X.shape[1]) - likelihood = likelihoods.Gaussian(Y,normalize=normalize_Y) + likelihood = likelihoods.Gaussian(Y, normalize=normalize_Y) GP.__init__(self, X, likelihood, kernel, normalize_X=normalize_X) self.ensure_default_constraints() + + def getstate(self): + return GP.getstate(self) + + + def setstate(self, state): + return GP.setstate(self, state) + + pass diff --git a/GPy/models/mrd.py b/GPy/models/mrd.py index 32bd2930..c8cb6607 100644 --- a/GPy/models/mrd.py +++ b/GPy/models/mrd.py @@ -84,8 +84,8 @@ class MRD(Model): Model.__init__(self) self.ensure_default_constraints() - def __getstate__(self): - return Model.__getstate__(self) + [self.names, + def getstate(self): + return Model.getstate(self) + [self.names, self.bgplvms, self.gref, self.nparams, @@ -95,7 +95,7 @@ class MRD(Model): self.NQ, self.MQ] - def __setstate__(self, state): + def setstate(self, state): self.MQ = state.pop() self.NQ = state.pop() self.num_data = state.pop() @@ -105,7 +105,7 @@ class MRD(Model): self.gref = state.pop() self.bgplvms = state.pop() self.names = state.pop() - Model.__setstate__(self, state) + Model.setstate(self, state) @property def X(self): diff --git a/GPy/models/sparse_gp_classification.py b/GPy/models/sparse_gp_classification.py index 9228fb89..5f36ebe1 100644 --- a/GPy/models/sparse_gp_classification.py +++ b/GPy/models/sparse_gp_classification.py @@ -28,7 +28,7 @@ class SparseGPClassification(SparseGP): def __init__(self, X, Y=None, likelihood=None, kernel=None, normalize_X=False, normalize_Y=False, Z=None, num_inducing=10): if kernel is None: - kernel = kern.rbf(X.shape[1]) + kern.white(X.shape[1],1e-3) + kernel = kern.rbf(X.shape[1]) + kern.white(X.shape[1], 1e-3) if likelihood is None: distribution = likelihoods.likelihood_functions.Binomial() @@ -41,7 +41,16 @@ class SparseGPClassification(SparseGP): i = np.random.permutation(X.shape[0])[:num_inducing] Z = X[i].copy() else: - assert Z.shape[1]==X.shape[1] + assert Z.shape[1] == X.shape[1] SparseGP.__init__(self, X, likelihood, kernel, Z=Z, normalize_X=normalize_X) self.ensure_default_constraints() + + def getstate(self): + return SparseGP.getstate(self) + + + def setstate(self, state): + return SparseGP.setstate(self, state) + + pass diff --git a/GPy/models/sparse_gp_regression.py b/GPy/models/sparse_gp_regression.py index 0dcef3e0..d5fcc7d7 100644 --- a/GPy/models/sparse_gp_regression.py +++ b/GPy/models/sparse_gp_regression.py @@ -43,3 +43,13 @@ class SparseGPRegression(SparseGP): SparseGP.__init__(self, X, likelihood, kernel, Z=Z, normalize_X=normalize_X, X_variance=X_variance) self.ensure_default_constraints() + pass + + def getstate(self): + return SparseGP.getstate(self) + + + def setstate(self, state): + return SparseGP.setstate(self, state) + + pass diff --git a/GPy/models/sparse_gplvm.py b/GPy/models/sparse_gplvm.py index d6f4adb9..6e7e40b1 100644 --- a/GPy/models/sparse_gplvm.py +++ b/GPy/models/sparse_gplvm.py @@ -28,6 +28,14 @@ class SparseGPLVM(SparseGPRegression, GPLVM): SparseGPRegression.__init__(self, X, Y, kernel=kernel, num_inducing=num_inducing) self.ensure_default_constraints() + def getstate(self): + return SparseGPRegression.getstate(self) + + + def setstate(self, state): + return SparseGPRegression.setstate(self, state) + + def _get_param_names(self): return (sum([['X_%i_%i' % (n, q) for q in range(self.input_dim)] for n in range(self.num_data)], []) + SparseGPRegression._get_param_names(self)) diff --git a/GPy/models/svigp_regression.py b/GPy/models/svigp_regression.py index 8448bf37..4d22c619 100644 --- a/GPy/models/svigp_regression.py +++ b/GPy/models/svigp_regression.py @@ -42,3 +42,11 @@ class SVIGPRegression(SVIGP): SVIGP.__init__(self, X, likelihood, kernel, Z, q_u=q_u, batchsize=batchsize) self.load_batch() + + def getstate(self): + return GPBase.getstate(self) + + + def setstate(self, state): + return GPBase.setstate(self, state) + diff --git a/GPy/models/warped_gp.py b/GPy/models/warped_gp.py index fcef66c6..dc6eeb46 100644 --- a/GPy/models/warped_gp.py +++ b/GPy/models/warped_gp.py @@ -28,6 +28,14 @@ class WarpedGP(GP): GP.__init__(self, X, likelihood, kernel, normalize_X=normalize_X) self._set_params(self._get_params()) + def getstate(self): + return GP.getstate(self) + + + def setstate(self, state): + return GP.setstate(self, state) + + def _scale_data(self, Y): self._Ymax = Y.max() self._Ymin = Y.min() diff --git a/doc/GPy.core.rst b/doc/GPy.core.rst index e02aaa2a..0590450f 100644 --- a/doc/GPy.core.rst +++ b/doc/GPy.core.rst @@ -9,6 +9,38 @@ core Package :undoc-members: :show-inheritance: +:mod:`domains` Module +--------------------- + +.. automodule:: GPy.core.domains + :members: + :undoc-members: + :show-inheritance: + +:mod:`fitc` Module +------------------ + +.. automodule:: GPy.core.fitc + :members: + :undoc-members: + :show-inheritance: + +:mod:`gp` Module +---------------- + +.. automodule:: GPy.core.gp + :members: + :undoc-members: + :show-inheritance: + +:mod:`gp_base` Module +--------------------- + +.. automodule:: GPy.core.gp_base + :members: + :undoc-members: + :show-inheritance: + :mod:`model` Module ------------------- @@ -17,10 +49,10 @@ core Package :undoc-members: :show-inheritance: -:mod:`parameterised` Module +:mod:`parameterized` Module --------------------------- -.. automodule:: GPy.core.parameterised +.. automodule:: GPy.core.parameterized :members: :undoc-members: :show-inheritance: @@ -33,3 +65,27 @@ core Package :undoc-members: :show-inheritance: +:mod:`sparse_gp` Module +----------------------- + +.. automodule:: GPy.core.sparse_gp + :members: + :undoc-members: + :show-inheritance: + +:mod:`svigp` Module +------------------- + +.. automodule:: GPy.core.svigp + :members: + :undoc-members: + :show-inheritance: + +:mod:`transformations` Module +----------------------------- + +.. automodule:: GPy.core.transformations + :members: + :undoc-members: + :show-inheritance: + diff --git a/doc/GPy.examples.rst b/doc/GPy.examples.rst index f17cf826..fedfd4b9 100644 --- a/doc/GPy.examples.rst +++ b/doc/GPy.examples.rst @@ -25,14 +25,6 @@ examples Package :undoc-members: :show-inheritance: -:mod:`non_gaussian` Module --------------------------- - -.. automodule:: GPy.examples.non_gaussian - :members: - :undoc-members: - :show-inheritance: - :mod:`regression` Module ------------------------ @@ -41,6 +33,14 @@ examples Package :undoc-members: :show-inheritance: +:mod:`stochastic` Module +------------------------ + +.. automodule:: GPy.examples.stochastic + :members: + :undoc-members: + :show-inheritance: + :mod:`tutorials` Module ----------------------- diff --git a/doc/GPy.inference.rst b/doc/GPy.inference.rst index f30e7d25..6a1bef4a 100644 --- a/doc/GPy.inference.rst +++ b/doc/GPy.inference.rst @@ -1,10 +1,18 @@ inference Package ================= -:mod:`SGD` Module ------------------ +:mod:`conjugate_gradient_descent` Module +---------------------------------------- -.. automodule:: GPy.inference.SGD +.. automodule:: GPy.inference.conjugate_gradient_descent + :members: + :undoc-members: + :show-inheritance: + +:mod:`gradient_descent_update_rules` Module +------------------------------------------- + +.. automodule:: GPy.inference.gradient_descent_update_rules :members: :undoc-members: :show-inheritance: @@ -25,3 +33,19 @@ inference Package :undoc-members: :show-inheritance: +:mod:`scg` Module +----------------- + +.. automodule:: GPy.inference.scg + :members: + :undoc-members: + :show-inheritance: + +:mod:`sgd` Module +----------------- + +.. automodule:: GPy.inference.sgd + :members: + :undoc-members: + :show-inheritance: + diff --git a/doc/GPy.kern.rst b/doc/GPy.kern.rst index aef712dc..35d9ec00 100644 --- a/doc/GPy.kern.rst +++ b/doc/GPy.kern.rst @@ -9,38 +9,6 @@ kern Package :undoc-members: :show-inheritance: -:mod:`Brownian` Module ----------------------- - -.. automodule:: GPy.kern.Brownian - :members: - :undoc-members: - :show-inheritance: - -:mod:`Matern32` Module ----------------------- - -.. automodule:: GPy.kern.Matern32 - :members: - :undoc-members: - :show-inheritance: - -:mod:`Matern52` Module ----------------------- - -.. automodule:: GPy.kern.Matern52 - :members: - :undoc-members: - :show-inheritance: - -:mod:`bias` Module ------------------- - -.. automodule:: GPy.kern.bias - :members: - :undoc-members: - :show-inheritance: - :mod:`constructors` Module -------------------------- @@ -49,30 +17,6 @@ kern Package :undoc-members: :show-inheritance: -:mod:`coregionalise` Module ---------------------------- - -.. automodule:: GPy.kern.coregionalise - :members: - :undoc-members: - :show-inheritance: - -:mod:`exponential` Module -------------------------- - -.. automodule:: GPy.kern.exponential - :members: - :undoc-members: - :show-inheritance: - -:mod:`finite_dimensional` Module --------------------------------- - -.. automodule:: GPy.kern.finite_dimensional - :members: - :undoc-members: - :show-inheritance: - :mod:`kern` Module ------------------ @@ -81,107 +25,10 @@ kern Package :undoc-members: :show-inheritance: -:mod:`kernpart` Module ----------------------- +Subpackages +----------- -.. automodule:: GPy.kern.kernpart - :members: - :undoc-members: - :show-inheritance: +.. toctree:: -:mod:`linear` Module --------------------- - -.. automodule:: GPy.kern.linear - :members: - :undoc-members: - :show-inheritance: - -:mod:`periodic_Matern32` Module -------------------------------- - -.. automodule:: GPy.kern.periodic_Matern32 - :members: - :undoc-members: - :show-inheritance: - -:mod:`periodic_Matern52` Module -------------------------------- - -.. automodule:: GPy.kern.periodic_Matern52 - :members: - :undoc-members: - :show-inheritance: - -:mod:`periodic_exponential` Module ----------------------------------- - -.. automodule:: GPy.kern.periodic_exponential - :members: - :undoc-members: - :show-inheritance: - -:mod:`prod` Module ------------------- - -.. automodule:: GPy.kern.prod - :members: - :undoc-members: - :show-inheritance: - -:mod:`prod_orthogonal` Module ------------------------------ - -.. automodule:: GPy.kern.prod_orthogonal - :members: - :undoc-members: - :show-inheritance: - -:mod:`rational_quadratic` Module --------------------------------- - -.. automodule:: GPy.kern.rational_quadratic - :members: - :undoc-members: - :show-inheritance: - -:mod:`rbf` Module ------------------ - -.. automodule:: GPy.kern.rbf - :members: - :undoc-members: - :show-inheritance: - -:mod:`spline` Module --------------------- - -.. automodule:: GPy.kern.spline - :members: - :undoc-members: - :show-inheritance: - -:mod:`symmetric` Module ------------------------ - -.. automodule:: GPy.kern.symmetric - :members: - :undoc-members: - :show-inheritance: - -:mod:`sympykern` Module ------------------------ - -.. automodule:: GPy.kern.sympykern - :members: - :undoc-members: - :show-inheritance: - -:mod:`white` Module -------------------- - -.. automodule:: GPy.kern.white - :members: - :undoc-members: - :show-inheritance: + GPy.kern.parts diff --git a/doc/GPy.likelihoods.rst b/doc/GPy.likelihoods.rst index 03c15a82..9fec38f8 100644 --- a/doc/GPy.likelihoods.rst +++ b/doc/GPy.likelihoods.rst @@ -9,7 +9,7 @@ likelihoods Package :undoc-members: :show-inheritance: -:mod:`EP` Module +:mod:`ep` Module ---------------- .. automodule:: GPy.likelihoods.ep @@ -17,7 +17,7 @@ likelihoods Package :undoc-members: :show-inheritance: -:mod:`Gaussian` Module +:mod:`gaussian` Module ---------------------- .. automodule:: GPy.likelihoods.gaussian @@ -41,3 +41,11 @@ likelihoods Package :undoc-members: :show-inheritance: +:mod:`link_functions` Module +---------------------------- + +.. automodule:: GPy.likelihoods.link_functions + :members: + :undoc-members: + :show-inheritance: + diff --git a/doc/GPy.models.rst b/doc/GPy.models.rst index f4ae6a59..4d227642 100644 --- a/doc/GPy.models.rst +++ b/doc/GPy.models.rst @@ -9,7 +9,7 @@ models Package :undoc-members: :show-inheritance: -:mod:`Bayesian_GPLVM` Module +:mod:`bayesian_gplvm` Module ---------------------------- .. automodule:: GPy.models.bayesian_gplvm @@ -17,18 +17,18 @@ models Package :undoc-members: :show-inheritance: -:mod:`gp` Module ----------------- +:mod:`fitc_classification` Module +--------------------------------- -.. automodule:: GPy.models.gp +.. automodule:: GPy.models.fitc_classification :members: :undoc-members: :show-inheritance: -:mod:`gplvm` Module -------------------- +:mod:`gp_classification` Module +------------------------------- -.. automodule:: GPy.models.gplvm +.. automodule:: GPy.models.gp_classification :members: :undoc-members: :show-inheritance: @@ -41,18 +41,26 @@ models Package :undoc-members: :show-inheritance: -:mod:`sparse_gp` Module ------------------------ +:mod:`gplvm` Module +------------------- -.. automodule:: GPy.models.sparse_gp +.. automodule:: GPy.models.gplvm :members: :undoc-members: :show-inheritance: -:mod:`SparseGPLVM` Module --------------------------- +:mod:`mrd` Module +----------------- -.. automodule:: GPy.models.sparse_gplvm +.. automodule:: GPy.models.mrd + :members: + :undoc-members: + :show-inheritance: + +:mod:`sparse_gp_classification` Module +-------------------------------------- + +.. automodule:: GPy.models.sparse_gp_classification :members: :undoc-members: :show-inheritance: @@ -65,13 +73,21 @@ models Package :undoc-members: :show-inheritance: -.. :mod:`uncollapsed_sparse_GP` Module -.. ----------------------------------- +:mod:`sparse_gplvm` Module +-------------------------- -.. .. automodule:: GPy.models.uncollapsed_sparse_GP -.. :members: -.. :undoc-members: -.. :show-inheritance: +.. automodule:: GPy.models.sparse_gplvm + :members: + :undoc-members: + :show-inheritance: + +:mod:`svigp_regression` Module +------------------------------ + +.. automodule:: GPy.models.svigp_regression + :members: + :undoc-members: + :show-inheritance: :mod:`warped_gp` Module ----------------------- diff --git a/doc/GPy.testing.rst b/doc/GPy.testing.rst index 5b32558b..6c461177 100644 --- a/doc/GPy.testing.rst +++ b/doc/GPy.testing.rst @@ -1,6 +1,14 @@ testing Package =============== +:mod:`testing` Package +---------------------- + +.. automodule:: GPy.testing + :members: + :undoc-members: + :show-inheritance: + :mod:`bgplvm_tests` Module -------------------------- @@ -9,6 +17,22 @@ testing Package :undoc-members: :show-inheritance: +:mod:`cgd_tests` Module +----------------------- + +.. automodule:: GPy.testing.cgd_tests + :members: + :undoc-members: + :show-inheritance: + +:mod:`checkgrad` Module +----------------------- + +.. automodule:: GPy.testing.checkgrad + :members: + :undoc-members: + :show-inheritance: + :mod:`examples_tests` Module ---------------------------- @@ -33,6 +57,14 @@ testing Package :undoc-members: :show-inheritance: +:mod:`mrd_tests` Module +----------------------- + +.. automodule:: GPy.testing.mrd_tests + :members: + :undoc-members: + :show-inheritance: + :mod:`prior_tests` Module ------------------------- @@ -41,6 +73,22 @@ testing Package :undoc-members: :show-inheritance: +:mod:`psi_stat_expactation_tests` Module +---------------------------------------- + +.. automodule:: GPy.testing.psi_stat_expactation_tests + :members: + :undoc-members: + :show-inheritance: + +:mod:`psi_stat_gradient_tests` Module +------------------------------------- + +.. automodule:: GPy.testing.psi_stat_gradient_tests + :members: + :undoc-members: + :show-inheritance: + :mod:`sparse_gplvm_tests` Module -------------------------------- diff --git a/doc/GPy.util.rst b/doc/GPy.util.rst index 5bec990b..e66329b6 100644 --- a/doc/GPy.util.rst +++ b/doc/GPy.util.rst @@ -17,6 +17,14 @@ util Package :undoc-members: :show-inheritance: +:mod:`classification` Module +---------------------------- + +.. automodule:: GPy.util.classification + :members: + :undoc-members: + :show-inheritance: + :mod:`datasets` Module ---------------------- @@ -25,6 +33,14 @@ util Package :undoc-members: :show-inheritance: +:mod:`decorators` Module +------------------------ + +.. automodule:: GPy.util.decorators + :members: + :undoc-members: + :show-inheritance: + :mod:`linalg` Module -------------------- @@ -41,6 +57,22 @@ util Package :undoc-members: :show-inheritance: +:mod:`mocap` Module +------------------- + +.. automodule:: GPy.util.mocap + :members: + :undoc-members: + :show-inheritance: + +:mod:`pca` Module +----------------- + +.. automodule:: GPy.util.pca + :members: + :undoc-members: + :show-inheritance: + :mod:`plot` Module ------------------ @@ -49,6 +81,14 @@ util Package :undoc-members: :show-inheritance: +:mod:`plot_latent` Module +------------------------- + +.. automodule:: GPy.util.plot_latent + :members: + :undoc-members: + :show-inheritance: + :mod:`squashers` Module ----------------------- @@ -57,6 +97,22 @@ util Package :undoc-members: :show-inheritance: +:mod:`univariate_Gaussian` Module +--------------------------------- + +.. automodule:: GPy.util.univariate_Gaussian + :members: + :undoc-members: + :show-inheritance: + +:mod:`visualize` Module +----------------------- + +.. automodule:: GPy.util.visualize + :members: + :undoc-members: + :show-inheritance: + :mod:`warping_functions` Module ------------------------------- diff --git a/doc/conf.py b/doc/conf.py index 8a05f386..4c377cb6 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -103,8 +103,10 @@ class Mock(object): #import mock print "Mocking" -MOCK_MODULES = ['pylab', 'sympy', 'sympy.utilities', 'sympy.utilities.codegen', 'sympy.core.cache', 'sympy.core', 'sympy.parsing', 'sympy.parsing.sympy_parser', 'matplotlib'] -#'matplotlib', 'matplotlib.color', 'matplotlib.pyplot', 'pylab' ] +MOCK_MODULES = ['sympy', + 'sympy.utilities', 'sympy.utilities.codegen', 'sympy.core.cache', + 'sympy.core', 'sympy.parsing', 'sympy.parsing.sympy_parser', + ] for mod_name in MOCK_MODULES: sys.modules[mod_name] = Mock() @@ -288,7 +290,7 @@ latex_elements = { #'pointsize': '10pt', # Additional stuff for the LaTeX preamble. - #'preamble': '', + 'preamble': '\\usepackage{MnSymbol}', } # Grouping the document tree into LaTeX files. List of tuples diff --git a/doc/index.rst b/doc/index.rst index a7b68c16..29b4cf43 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -11,6 +11,7 @@ For a quick start, you can have a look at one of the tutorials: * `Interacting with models `_ * `A kernel overview `_ * `Writing new kernels `_ +* `Writing new models `_ You may also be interested by some examples in the GPy/examples folder. diff --git a/doc/tuto_interacting_with_models.rst b/doc/tuto_interacting_with_models.rst index 3cea7fb7..4a466bae 100644 --- a/doc/tuto_interacting_with_models.rst +++ b/doc/tuto_interacting_with_models.rst @@ -1,3 +1,5 @@ +.. _interacting_with_models: + ************************************* Interacting with models ************************************* @@ -210,6 +212,6 @@ white_variance and noise_variance are tied together.:: Further Reading =============== -All of the mechansiams for dealing with parameters are baked right into GPy.core.model, from which all of the classes in GPy.models inherrit. To learn how to construct your own model, you might want to read ??link?? creating_new_models. +All of the mechansiams for dealing with parameters are baked right into GPy.core.model, from which all of the classes in GPy.models inherrit. To learn how to construct your own model, you might want to read :ref:`creating_new_models`. -By deafult, GPy uses the tnc optimizer (from scipy.optimize.tnc). To use other optimisers, and to control the setting of those optimisers, as well as other funky features like automated restarts and diagnostics, you can read the optimization tutorial ??link??. +By deafult, GPy uses the scg optimizer. To use other optimisers, and to control the setting of those optimisers, as well as other funky features like automated restarts and diagnostics, you can read the optimization tutorial ??link??. From c773672b6914b96617ec5577d6192120d3d4a67a Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Wed, 26 Jun 2013 17:02:35 +0100 Subject: [PATCH 004/135] params left in __get/setitem__ --- GPy/core/parameterized.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GPy/core/parameterized.py b/GPy/core/parameterized.py index 0f5ef905..88625fba 100644 --- a/GPy/core/parameterized.py +++ b/GPy/core/parameterized.py @@ -93,9 +93,9 @@ class Parameterized(object): if len(matches): val = np.array(val) assert (val.size == 1) or val.size == len(matches), "Shape mismatch: {}:({},)".format(val.size, len(matches)) - x = self.params + x = self._get_params x[matches] = val - self.params = x + self._set_params(x) else: raise AttributeError, "no parameter matches %s" % name From d978d3e390057ada7faa8e14e984c2e024a61fbb Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Wed, 26 Jun 2013 17:02:48 +0100 Subject: [PATCH 005/135] added tutorial for creating models --- doc/tuto_creating_new_models.rst | 64 ++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 doc/tuto_creating_new_models.rst diff --git a/doc/tuto_creating_new_models.rst b/doc/tuto_creating_new_models.rst new file mode 100644 index 00000000..021b4950 --- /dev/null +++ b/doc/tuto_creating_new_models.rst @@ -0,0 +1,64 @@ +.. _creating_new_models: + +******************* +Creating new Models +******************* + +In GPy all models inherit from the base class :py:class:`~GPy.core.parameterized.Parameterized`. :py:class:`~GPy.core.parameterized.Parameterized` is a class which allows for parameterization of objects. All it holds is functionality for tying, bounding and fixing of parameters. It also provides the functionality of searching and manipulating parameters by regular expression syntax. See :py:class:`~GPy.core.parameterized.Parameterized` for more information. + +The :py:class:`~GPy.core.model.Model` class provides parameter introspection, objective function and optimization. + +In order to fully use all functionality of :py:class:`~GPy.core.model.Model` some methods need to be implemented / overridden. In order to explain the functionality of those methods we will use a wrapper to the numpy ``rosen`` function, which holds input parameters :math:`\mathbf{X}`. Where :math:`\mathbf{X}\in\mathbb{R}^{N\times 1}`. + +Obligatory methods +================== + +:py:meth:`~GPy.core.model.Model.__init__` : + Initialize the model with the given parameters. In our example we have to store shape information of :math:`\mathbf X` and the parameters themselves:: + + self.X = X + self.num_inputs = self.X.shape[0] + assert self.X.ndim == 1, only vector inputs allowed + +:py:meth:`~GPy.core.model.Model._get_params` : + Return parameters of the model as a flattened numpy array-like. So, in our example we have to return the input parameters:: + + return self.X.flatten() + +:py:meth:`~GPy.core.model.Model._set_params` : + Set parameters, which have been fetched through :py:meth:`~GPy.core.model.Model._get_params`. In other words, "invert" the functionality of :py:meth:`~GPy.core.model.Model._get_params`:: + + self.X = params[:self.num_inputs*self.input_dim].reshape(self.num_inputs) + +:py:meth:`~GPy.core.model.Model.log_likelihood` : + Returns the log-likelihood of the new model. For our example this is just the call to ``rosen``:: + + return scipy.optimize.rosen(self.X) + +:py:meth:`~GPy.core.model.Model._log_likelihood_gradients` : + Returns the gradients with respect to all parameters:: + + return scipy.optimize.rosen_der(self.X) + + +Optional methods +================ + +If you want some special functionality please provide the following methods: + +Using the pickle functionality +------------------------------ + +To be able to use the pickle functionality ``m.pickle()`` the methods ``getstate(self)`` and ``setstate(self, state)`` have to be provided. The convention for a ``state`` in ``GPy`` is a list of all parameters, which are needed to restore the model. All classes provided in ``GPy`` follow this convention, thus you can just append to the state of the inherited class and call the inherited class' ``setstate`` with the appropriate state. + +:py:meth:`~GPy.core.model.Model.getstate` : + This method returns a state of the model, following the memento pattern. As we are inheriting from :py:class:`~GPy.core.model.Model`, we have to return the state of Model as well. In out example we have `X` and `num_inputs` as state:: + + return Model.getstate(self) + [self.X, self.num_inputs] + +:py:meth:`~GPy.core.model.Model.setstate` : + This method restores this model with the given ``state``:: + + self.num_inputs = state.pop() + self.X = state.pop() + return Model.setstate(self, state) \ No newline at end of file From 146dff7cbf4434ec814bf5e5e52f4b24c8f2898e Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Wed, 26 Jun 2013 17:04:10 +0100 Subject: [PATCH 006/135] _get/set_params into parameterized --- GPy/core/model.py | 4 ---- GPy/core/parameterized.py | 5 +++++ 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/GPy/core/model.py b/GPy/core/model.py index fe5d5181..d4c8c974 100644 --- a/GPy/core/model.py +++ b/GPy/core/model.py @@ -23,10 +23,6 @@ class Model(Parameterized): self.sampling_runs = [] self.preferred_optimizer = 'scg' # self._set_params(self._get_params()) has been taken out as it should only be called on leaf nodes - def _get_params(self): - raise NotImplementedError, "this needs to be implemented to use the Model class" - def _set_params(self, x): - raise NotImplementedError, "this needs to be implemented to use the Model class" def log_likelihood(self): raise NotImplementedError, "this needs to be implemented to use the Model class" def _log_likelihood_gradients(self): diff --git a/GPy/core/parameterized.py b/GPy/core/parameterized.py index 88625fba..beb7521f 100644 --- a/GPy/core/parameterized.py +++ b/GPy/core/parameterized.py @@ -20,6 +20,11 @@ class Parameterized(object): self.constrained_indices = [] self.constraints = [] + def _get_params(self): + raise NotImplementedError, "this needs to be implemented to use the Model class" + def _set_params(self, x): + raise NotImplementedError, "this needs to be implemented to use the Model class" + def pickle(self, filename, protocol=None): if protocol is None: if self._has_get_set_state(): From 761f7b02fcedf71aa7ab2ee9f747478a8fb6f3bd Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Wed, 26 Jun 2013 17:05:28 +0100 Subject: [PATCH 007/135] _get/set_params into parameterized --- GPy/core/parameterized.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GPy/core/parameterized.py b/GPy/core/parameterized.py index beb7521f..b94689ad 100644 --- a/GPy/core/parameterized.py +++ b/GPy/core/parameterized.py @@ -98,7 +98,7 @@ class Parameterized(object): if len(matches): val = np.array(val) assert (val.size == 1) or val.size == len(matches), "Shape mismatch: {}:({},)".format(val.size, len(matches)) - x = self._get_params + x = self._get_params() x[matches] = val self._set_params(x) else: From 97acb36b5596745cfd762eefde2172c70384e09b Mon Sep 17 00:00:00 2001 From: Nicolas Date: Wed, 26 Jun 2013 17:29:37 +0100 Subject: [PATCH 008/135] new constrain_negative negative_logexp (selected by default) --- GPy/core/parameterised.py | 2 +- GPy/core/transformations.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/GPy/core/parameterised.py b/GPy/core/parameterised.py index 13467fdf..af96e0a7 100644 --- a/GPy/core/parameterised.py +++ b/GPy/core/parameterised.py @@ -199,7 +199,7 @@ class Parameterised(object): def constrain_negative(self, regexp): """ Set negative constraints. """ - self.constrain(regexp, transformations.negative_exponent()) + self.constrain(regexp, transformations.negative_logexp()) def constrain_positive(self, regexp): """ Set positive constraints. """ diff --git a/GPy/core/transformations.py b/GPy/core/transformations.py index 2520a33b..5db835a9 100644 --- a/GPy/core/transformations.py +++ b/GPy/core/transformations.py @@ -36,6 +36,20 @@ class logexp(transformation): def __str__(self): return '(+ve)' +class negative_logexp(transformation): + domain = NEGATIVE + def f(self, x): + return -np.log(1. + np.exp(x)) + def finv(self, f): + return np.log(np.exp(-f) - 1.) + def gradfactor(self, f): + ef = np.exp(-f) + return -(ef - 1.) / ef + def initialize(self, f): + return -np.abs(f) + def __str__(self): + return '(-ve)' + class logexp_clipped(transformation): max_bound = 1e100 min_bound = 1e-10 From b9ca93e8abb716065680809e6cedf0d36fdeb93d Mon Sep 17 00:00:00 2001 From: Nicolas Date: Wed, 26 Jun 2013 18:41:05 +0100 Subject: [PATCH 009/135] Fixed bug in constructors --- GPy/kern/constructors.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GPy/kern/constructors.py b/GPy/kern/constructors.py index 697f3554..487a324b 100644 --- a/GPy/kern/constructors.py +++ b/GPy/kern/constructors.py @@ -227,7 +227,7 @@ def periodic_Matern52(input_dim, variance=1., lengthscale=None, period=2 * np.pi :param n_freq: the number of frequencies considered for the periodic subspace :type n_freq: int """ - part = parts.periodic_Matern52part(input_dim, variance, lengthscale, period, n_freq, lower, upper) + part = parts.periodic_Matern52.PeriodicMatern52(input_dim, variance, lengthscale, period, n_freq, lower, upper) return kern(input_dim, [part]) def prod(k1,k2,tensor=False): From 26260c355c7d3c247cd6d23f9d98f189e406ecb6 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Thu, 27 Jun 2013 10:40:23 +0100 Subject: [PATCH 010/135] added docstring to domains --- GPy/core/domains.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/GPy/core/domains.py b/GPy/core/domains.py index dfc880f6..cefac6c2 100644 --- a/GPy/core/domains.py +++ b/GPy/core/domains.py @@ -2,6 +2,22 @@ Created on 4 Jun 2013 @author: maxz + +(Hyper-)Parameter domains defined for :py:mod:`~GPy.core.priors` and :py:mod:`~GPy.kern`. +These domains specify the legitimate realm of the parameters to live in. + +:const:`~GPy.core.domains.REAL` : + real domain, all values in the real numbers are allowed + +:const:`~GPy.core.domains.POSITIVE`: + positive domain, only positive real values are allowed + +:const:`~GPy.core.domains.NEGATIVE`: + same as :const:`~GPy.core.domains.POSITIVE`, but only negative values are allowed + +:const:`~GPy.core.domains.BOUNDED`: + only values within the bounded range are allowed, + the bounds are specified withing the object with the bounded range ''' REAL = 'real' From 8cdedf2edb697a484c2b11b381f463ca95541da1 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Thu, 27 Jun 2013 11:11:41 +0100 Subject: [PATCH 011/135] plot_latent bug-fix in mrd --- GPy/kern/kern.py | 3 ++- GPy/models/mrd.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/GPy/kern/kern.py b/GPy/kern/kern.py index 176abbaf..4bb4752f 100644 --- a/GPy/kern/kern.py +++ b/GPy/kern/kern.py @@ -75,7 +75,8 @@ class kern(Parameterized): if hasattr(p, 'ARD') and p.ARD: if title is None: ax.set_title('ARD parameters, %s kernel' % p.name) - + else: + ax.set_title(title) if p.name == 'linear': ard_params = p.variances else: diff --git a/GPy/models/mrd.py b/GPy/models/mrd.py index c8cb6607..0af0dede 100644 --- a/GPy/models/mrd.py +++ b/GPy/models/mrd.py @@ -315,7 +315,7 @@ class MRD(Model): return fig def plot_latent(self, fignum=None, ax=None, *args, **kwargs): - fig = self.gref.plot_X_1d(*args, **kwargs) # self._handle_plotting(fignum, ax, lambda i, g, ax: g.plot_latent(ax=ax, *args, **kwargs)) + fig = self.gref.plot_latent(*args, **kwargs) # self._handle_plotting(fignum, ax, lambda i, g, ax: g.plot_latent(ax=ax, *args, **kwargs)) return fig def _debug_plot(self): From 9e9131b90d658fe2af4704ff89845c91402e83fe Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Thu, 27 Jun 2013 11:17:58 +0100 Subject: [PATCH 012/135] plot_latent bug-fix of creating no figure --- GPy/testing/examples_tests.py | 10 +++++----- GPy/util/plot_latent.py | 5 +++-- GPy/util/visualize.py | 24 ++++++++++++------------ 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/GPy/testing/examples_tests.py b/GPy/testing/examples_tests.py index ec030055..989251a7 100644 --- a/GPy/testing/examples_tests.py +++ b/GPy/testing/examples_tests.py @@ -19,14 +19,14 @@ class ExamplesTests(unittest.TestCase): self.assertTrue(isinstance(Model, GPy.models)) """ -def model_instance_generator(Model): +def model_instance_generator(model): def check_model_returned(self): - self._model_instance(Model) + self._model_instance(model) return check_model_returned -def checkgrads_generator(Model): +def checkgrads_generator(model): def model_checkgrads(self): - self._checkgrad(Model) + self._checkgrad(model) return model_checkgrads """ @@ -37,7 +37,7 @@ def model_checkgrads(model): def model_instance(model): #assert isinstance(model, GPy.core.model) - return isinstance(model, GPy.core.Model) + return isinstance(model, GPy.core.model) @nottest def test_models(): diff --git a/GPy/util/plot_latent.py b/GPy/util/plot_latent.py index c36c5e34..9c832769 100644 --- a/GPy/util/plot_latent.py +++ b/GPy/util/plot_latent.py @@ -2,13 +2,14 @@ import pylab as pb import numpy as np from .. import util -def plot_latent(model, labels=None, which_indices=None, resolution=50, ax=None, marker='o', s=40): +def plot_latent(model, labels=None, which_indices=None, resolution=50, ax=None, marker='o', s=40, fignum=None): """ :param labels: a np.array of size model.num_data containing labels for the points (can be number, strings, etc) :param resolution: the resolution of the grid on which to evaluate the predictive variance """ if ax is None: - ax = pb.gca() + fig = pb.figure(num=fignum) + ax = fig.add_subplot(111) util.plot.Tango.reset() if labels is None: diff --git a/GPy/util/visualize.py b/GPy/util/visualize.py index 529f0eff..886e8486 100644 --- a/GPy/util/visualize.py +++ b/GPy/util/visualize.py @@ -103,7 +103,7 @@ class lvm(matplotlib_show): self.cid = latent_axes[0].figure.canvas.mpl_connect('axes_enter_event', self.on_enter) self.data_visualize = data_visualize - self.Model = model + self.model = model self.latent_axes = latent_axes self.sense_axes = sense_axes self.called = False @@ -120,7 +120,7 @@ class lvm(matplotlib_show): def modify(self, vals): """When latent values are modified update the latent representation and ulso update the output visualization.""" self.vals = vals.copy() - y = self.Model.predict(self.vals)[0] + y = self.model.predict(self.vals)[0] self.data_visualize.modify(y) self.latent_handle.set_data(self.vals[self.latent_index[0]], self.vals[self.latent_index[1]]) self.axes.figure.canvas.draw() @@ -148,15 +148,15 @@ class lvm(matplotlib_show): # A click in the bar chart axis for selection a dimension. if self.sense_axes != None: self.sense_axes.cla() - self.sense_axes.bar(np.arange(self.Model.input_dim),1./self.Model.input_sensitivity(),color='b') + self.sense_axes.bar(np.arange(self.model.input_dim),1./self.model.input_sensitivity(),color='b') if self.latent_index[1] == self.latent_index[0]: - self.sense_axes.bar(np.array(self.latent_index[0]),1./self.Model.input_sensitivity()[self.latent_index[0]],color='y') - self.sense_axes.bar(np.array(self.latent_index[1]),1./self.Model.input_sensitivity()[self.latent_index[1]],color='y') + self.sense_axes.bar(np.array(self.latent_index[0]),1./self.model.input_sensitivity()[self.latent_index[0]],color='y') + self.sense_axes.bar(np.array(self.latent_index[1]),1./self.model.input_sensitivity()[self.latent_index[1]],color='y') else: - self.sense_axes.bar(np.array(self.latent_index[0]),1./self.Model.input_sensitivity()[self.latent_index[0]],color='g') - self.sense_axes.bar(np.array(self.latent_index[1]),1./self.Model.input_sensitivity()[self.latent_index[1]],color='r') + self.sense_axes.bar(np.array(self.latent_index[0]),1./self.model.input_sensitivity()[self.latent_index[0]],color='g') + self.sense_axes.bar(np.array(self.latent_index[1]),1./self.model.input_sensitivity()[self.latent_index[1]],color='r') self.sense_axes.figure.canvas.draw() @@ -193,7 +193,7 @@ class lvm_dimselect(lvm): GPy.examples.dimensionality_reduction.BGPVLM_oil() """ - def __init__(self, vals, Model, data_visualize, latent_axes=None, sense_axes=None, latent_index=[0, 1], labels=None): + def __init__(self, vals, model, data_visualize, latent_axes=None, sense_axes=None, latent_index=[0, 1], labels=None): if latent_axes==None and sense_axes==None: self.fig,(latent_axes,self.sense_axes) = plt.subplots(1,2) elif sense_axes==None: @@ -202,7 +202,7 @@ class lvm_dimselect(lvm): else: self.sense_axes = sense_axes self.labels = labels - lvm.__init__(self,vals,Model,data_visualize,latent_axes,sense_axes,latent_index) + lvm.__init__(self,vals,model,data_visualize,latent_axes,sense_axes,latent_index) self.show_sensitivities() print "use left and right mouse butons to select dimensions" @@ -210,7 +210,7 @@ class lvm_dimselect(lvm): def on_click(self, event): if event.inaxes==self.sense_axes: - new_index = max(0,min(int(np.round(event.xdata-0.5)),self.Model.input_dim-1)) + new_index = max(0,min(int(np.round(event.xdata-0.5)),self.model.input_dim-1)) if event.button == 1: # Make it red if and y-axis (red=port=left) if it is a left button click self.latent_index[1] = new_index @@ -221,7 +221,7 @@ class lvm_dimselect(lvm): self.show_sensitivities() self.latent_axes.cla() - self.Model.plot_latent(which_indices=self.latent_index, + self.model.plot_latent(which_indices=self.latent_index, ax=self.latent_axes, labels=self.labels) self.latent_handle = self.latent_axes.plot([0],[0],'rx',mew=2)[0] self.modify(self.latent_values) @@ -235,7 +235,7 @@ class lvm_dimselect(lvm): def on_leave(self,event): latent_values = self.latent_values.copy() - y = self.Model.predict(latent_values[None,:])[0] + y = self.model.predict(latent_values[None,:])[0] self.data_visualize.modify(y) From 66a6bde715f192ef6c4a1470d6d90c6425d01da9 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Fri, 28 Jun 2013 10:59:29 +0100 Subject: [PATCH 013/135] more robust gradient clippinggit stat --- GPy/core/model.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/GPy/core/model.py b/GPy/core/model.py index d4c8c974..5de114c5 100644 --- a/GPy/core/model.py +++ b/GPy/core/model.py @@ -272,12 +272,13 @@ class Model(Parameterized): """ try: self._set_params_transformed(x) + obj_grads = -self._transform_gradients(self._log_likelihood_gradients() + self._log_prior_gradients()) self._fail_count = 0 except (LinAlgError, ZeroDivisionError, ValueError) as e: if self._fail_count >= self._allowed_failures: raise e self._fail_count += 1 - obj_grads = -self._transform_gradients(self._log_likelihood_gradients() + self._log_prior_gradients()) + obj_grads = np.clip(-self._transform_gradients(self._log_likelihood_gradients() + self._log_prior_gradients()), -1e100, 1e100) return obj_grads def objective_and_gradients(self, x): @@ -285,12 +286,13 @@ class Model(Parameterized): self._set_params_transformed(x) obj_f = -self.log_likelihood() - self.log_prior() self._fail_count = 0 + obj_grads = -self._transform_gradients(self._log_likelihood_gradients() + self._log_prior_gradients()) except (LinAlgError, ZeroDivisionError, ValueError) as e: if self._fail_count >= self._allowed_failures: raise e self._fail_count += 1 obj_f = np.inf - obj_grads = -self._transform_gradients(self._log_likelihood_gradients() + self._log_prior_gradients()) + obj_grads = np.clip(-self._transform_gradients(self._log_likelihood_gradients() + self._log_prior_gradients()), -1e100, 1e100) return obj_f, obj_grads def optimize(self, optimizer=None, start=None, **kwargs): @@ -311,7 +313,9 @@ class Model(Parameterized): optimizer = optimization.get_optimizer(optimizer) opt = optimizer(start, model=self, **kwargs) + opt.run(f_fp=self.objective_and_gradients, f=self.objective_function, fp=self.objective_function_gradients) + self.optimization_runs.append(opt) self._set_params_transformed(opt.x_opt) From 08a902ed6ce28b7e751b65ed1fe9cdee79d6c6ee Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Fri, 28 Jun 2013 11:00:09 +0100 Subject: [PATCH 014/135] massively improved printing --- GPy/inference/scg.py | 41 +++++++++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/GPy/inference/scg.py b/GPy/inference/scg.py index 5753be7f..680874e4 100644 --- a/GPy/inference/scg.py +++ b/GPy/inference/scg.py @@ -26,11 +26,14 @@ import numpy as np import sys -def print_out(len_maxiters, display, fnow, current_grad, beta, iteration): - if display: - print '\r', - print '{0:>0{mi}g} {1:> 12e} {2:> 12e} {3:> 12e}'.format(iteration, float(fnow), float(beta), float(current_grad), mi=len_maxiters), # print 'Iteration:', iteration, ' Objective:', fnow, ' Scale:', beta, '\r', - sys.stdout.flush() +def print_out(len_maxiters, fnow, current_grad, beta, iteration): + print '\r', + print '{0:>0{mi}g} {1:> 12e} {2:> 12e} {3:> 12e}'.format(iteration, float(fnow), float(beta), float(current_grad), mi=len_maxiters), # print 'Iteration:', iteration, ' Objective:', fnow, ' Scale:', beta, '\r', + sys.stdout.flush() + +def exponents(fnow, current_grad): + exps = [np.abs(fnow), current_grad] + return np.sign(exps) * np.log10(exps).astype(int) def SCG(f, gradf, x, optargs=(), maxiters=500, max_f_eval=500, display=True, xtol=None, ftol=None, gtol=None): """ @@ -52,6 +55,7 @@ def SCG(f, gradf, x, optargs=(), maxiters=500, max_f_eval=500, display=True, xto ftol = 1e-6 if gtol is None: gtol = 1e-5 + sigma0 = 1.0e-8 fold = f(x, *optargs) # Initial function value. function_eval = 1 @@ -74,6 +78,8 @@ def SCG(f, gradf, x, optargs=(), maxiters=500, max_f_eval=500, display=True, xto len_maxiters = len(str(maxiters)) if display: print ' {0:{mi}s} {1:11s} {2:11s} {3:11s}'.format("I", "F", "Scale", "|g|", mi=len_maxiters) + exps = exponents(fnow, current_grad) + p_iter = iteration # Main optimization loop. while iteration < maxiters: @@ -104,7 +110,7 @@ def SCG(f, gradf, x, optargs=(), maxiters=500, max_f_eval=500, display=True, xto function_eval += 1 if function_eval >= max_f_eval: - status = "Maximum number of function evaluations exceeded" + status = "maximum number of function evaluations exceeded" break # return x, flog, function_eval, status @@ -122,15 +128,24 @@ def SCG(f, gradf, x, optargs=(), maxiters=500, max_f_eval=500, display=True, xto flog.append(fnow) # Current function value iteration += 1 - print_out(len_maxiters, display, fnow, current_grad, beta, iteration) + if display: + n_exps = exponents(fnow, current_grad) + if iteration - p_iter >= 6 and ((iteration >= p_iter * 2.78) or np.any(n_exps < exps)): + exps = n_exps + p_iter = iteration + print '' + print_out(len_maxiters, fnow, current_grad, beta, iteration) if success: # Test for termination - if (np.max(np.abs(alpha * d)) < xtol) or (np.abs(fnew - fold) < ftol): - status = 'converged' + + if (np.abs(fnew - fold) < ftol): + status = 'converged - relative reduction in objective' break # return x, flog, function_eval, status - + elif (np.max(np.abs(alpha * d)) < xtol): + status = 'converged - relative stepsize' + break else: # Update variables for new position gradnew = gradf(x, *optargs) @@ -139,7 +154,7 @@ def SCG(f, gradf, x, optargs=(), maxiters=500, max_f_eval=500, display=True, xto fold = fnew # If the gradient is zero then we are done. if current_grad <= gtol: - status = 'converged' + status = 'converged - relative reduction in gradient' break # return x, flog, function_eval, status @@ -164,6 +179,8 @@ def SCG(f, gradf, x, optargs=(), maxiters=500, max_f_eval=500, display=True, xto status = "maxiter exceeded" if display: - print_out(len_maxiters, display, fnow, current_grad, beta, iteration) print "" + print_out(len_maxiters, fnow, current_grad, beta, iteration) + print "" + print status return x, flog, function_eval, status From 7325e319b40aff9c94c2d564c3cbf29f8ef40211 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Fri, 28 Jun 2013 11:00:42 +0100 Subject: [PATCH 015/135] plot_latent enhancements --- GPy/models/bayesian_gplvm.py | 5 ++-- GPy/models/mrd.py | 47 +++++++++++++++++++++++------------- 2 files changed, 32 insertions(+), 20 deletions(-) diff --git a/GPy/models/bayesian_gplvm.py b/GPy/models/bayesian_gplvm.py index 916c307d..68b0a133 100644 --- a/GPy/models/bayesian_gplvm.py +++ b/GPy/models/bayesian_gplvm.py @@ -24,8 +24,7 @@ class BayesianGPLVM(SparseGP, GPLVM): """ def __init__(self, likelihood_or_Y, input_dim, X=None, X_variance=None, init='PCA', num_inducing=10, - Z=None, kernel=None, oldpsave=10, _debug=False, - **kwargs): + Z=None, kernel=None, **kwargs): if type(likelihood_or_Y) is np.ndarray: likelihood = Gaussian(likelihood_or_Y) else: @@ -117,7 +116,7 @@ class BayesianGPLVM(SparseGP, GPLVM): return np.hstack((self.dbound_dmuS.flatten(), self.dbound_dZtheta)) def plot_latent(self, *args, **kwargs): - return plot_latent.plot_latent_indices(self, *args, **kwargs) + return plot_latent.plot_latent(self, *args, **kwargs) def do_test_latents(self, Y): """ diff --git a/GPy/models/mrd.py b/GPy/models/mrd.py index 0af0dede..327c198f 100644 --- a/GPy/models/mrd.py +++ b/GPy/models/mrd.py @@ -48,7 +48,7 @@ class MRD(Model): kernels=None, initx='PCA', initz='permute', _debug=False, **kw): if names is None: - self.names = ["{}".format(i + 1) for i in range(len(likelihood_or_Y_list))] + self.names = ["{}".format(i) for i in range(len(likelihood_or_Y_list))] # sort out the kernels if kernels is None: @@ -281,12 +281,23 @@ class MRD(Model): self.Z = Z return Z - def _handle_plotting(self, fignum, axes, plotf): + def _handle_plotting(self, fignum, axes, plotf, sharex=False, sharey=False): if axes is None: fig = pylab.figure(num=fignum) + sharex_ax = None + sharey_ax = None for i, g in enumerate(self.bgplvms): + try: + if sharex: + sharex_ax = ax # @UndefinedVariable + sharex = False # dont set twice + if sharey: + sharey_ax = ax # @UndefinedVariable + sharey = False # dont set twice + except: + pass if axes is None: - ax = fig.add_subplot(1, len(self.bgplvms), i + 1) + ax = fig.add_subplot(1, len(self.bgplvms), i + 1, sharex=sharex_ax, sharey=sharey_ax) elif isinstance(axes, (tuple, list)): ax = axes[i] else: @@ -306,16 +317,27 @@ class MRD(Model): fig = self._handle_plotting(fignum, ax, lambda i, g, ax: ax.imshow(g.X)) return fig - def plot_predict(self, fignum=None, ax=None, **kwargs): - fig = self._handle_plotting(fignum, ax, lambda i, g, ax: ax.imshow(g. predict(g.X)[0], **kwargs)) + def plot_predict(self, fignum=None, ax=None, sharex=False, sharey=False, **kwargs): + fig = self._handle_plotting(fignum, + ax, + lambda i, g, ax: ax.imshow(g. predict(g.X)[0], **kwargs), + sharex=sharex, sharey=sharey) return fig - def plot_scales(self, fignum=None, ax=None, *args, **kwargs): - fig = self._handle_plotting(fignum, ax, lambda i, g, ax: g.kern.plot_ARD(ax=ax, title=r'$Y_{}$'.format(i), *args, **kwargs)) + def plot_scales(self, fignum=None, ax=None, titles=None, sharex=False, sharey=True, *args, **kwargs): + """ + :param:`titles` : + titles for axes of datasets + """ + if titles is None: + titles = [r'${}$'.format(name) for name in self.names] + def plotf(i, g, ax): + g.kern.plot_ARD(ax=ax, title=titles[i], *args, **kwargs) + fig = self._handle_plotting(fignum, ax, plotf, sharex=sharex, sharey=sharey) return fig def plot_latent(self, fignum=None, ax=None, *args, **kwargs): - fig = self.gref.plot_latent(*args, **kwargs) # self._handle_plotting(fignum, ax, lambda i, g, ax: g.plot_latent(ax=ax, *args, **kwargs)) + fig = self.gref.plot_latent(fignum=fignum, ax=ax, *args, **kwargs) # self._handle_plotting(fignum, ax, lambda i, g, ax: g.plot_latent(ax=ax, *args, **kwargs)) return fig def _debug_plot(self): @@ -331,13 +353,4 @@ class MRD(Model): pylab.draw() fig.tight_layout() - def _debug_optimize(self, opt='scg', maxiters=5000, itersteps=10): - iters = 0 - optstep = lambda: self.optimize(opt, messages=1, max_f_eval=itersteps) - self._debug_plot() - raw_input("enter to start debug") - while iters < maxiters: - optstep() - self._debug_plot() - iters += itersteps From c0d514b6c094e282d33b43f1b936e9704921263e Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Fri, 28 Jun 2013 11:01:31 +0100 Subject: [PATCH 016/135] optional plotting of inducing inputs added --- GPy/util/plot_latent.py | 59 +++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 35 deletions(-) diff --git a/GPy/util/plot_latent.py b/GPy/util/plot_latent.py index 9c832769..d89d90d8 100644 --- a/GPy/util/plot_latent.py +++ b/GPy/util/plot_latent.py @@ -2,7 +2,7 @@ import pylab as pb import numpy as np from .. import util -def plot_latent(model, labels=None, which_indices=None, resolution=50, ax=None, marker='o', s=40, fignum=None): +def plot_latent(model, labels=None, which_indices=None, resolution=50, ax=None, marker='o', s=40, fignum=None, plot_inducing=False, legend=True): """ :param labels: a np.array of size model.num_data containing labels for the points (can be number, strings, etc) :param resolution: the resolution of the grid on which to evaluate the predictive variance @@ -15,11 +15,11 @@ def plot_latent(model, labels=None, which_indices=None, resolution=50, ax=None, if labels is None: labels = np.ones(model.num_data) if which_indices is None: - if model.input_dim==1: + if model.input_dim == 1: input_1 = 0 input_2 = None - if model.input_dim==2: - input_1, input_2 = 0,1 + if model.input_dim == 2: + input_1, input_2 = 0, 1 else: try: input_1, input_2 = np.argsort(model.input_sensitivity())[:2] @@ -28,14 +28,14 @@ def plot_latent(model, labels=None, which_indices=None, resolution=50, ax=None, else: input_1, input_2 = which_indices - #first, plot the output variance as a function of the latent space - Xtest, xx,yy,xmin,xmax = util.plot.x_frame2D(model.X[:,[input_1, input_2]],resolution=resolution) + # first, plot the output variance as a function of the latent space + Xtest, xx, yy, xmin, xmax = util.plot.x_frame2D(model.X[:, [input_1, input_2]], resolution=resolution) Xtest_full = np.zeros((Xtest.shape[0], model.X.shape[1])) Xtest_full[:, :2] = Xtest mu, var, low, up = model.predict(Xtest_full) var = var[:, :1] ax.imshow(var.reshape(resolution, resolution).T, - extent=[xmin[0], xmax[0], xmin[1], xmax[1]], cmap=pb.cm.binary,interpolation='bilinear',origin='lower') + extent=[xmin[0], xmax[0], xmin[1], xmax[1]], cmap=pb.cm.binary, interpolation='bilinear', origin='lower') # make sure labels are in order of input: ulabels = [] @@ -47,46 +47,35 @@ def plot_latent(model, labels=None, which_indices=None, resolution=50, ax=None, if type(ul) is np.string_: this_label = ul elif type(ul) is np.int64: - this_label = 'class %i'%ul + this_label = 'class %i' % ul else: - this_label = 'class %i'%i + this_label = 'class %i' % i if len(marker) == len(ulabels): m = marker[i] else: m = marker - index = np.nonzero(labels==ul)[0] - if model.input_dim==1: - x = model.X[index,input_1] + index = np.nonzero(labels == ul)[0] + if model.input_dim == 1: + x = model.X[index, input_1] y = np.zeros(index.size) else: - x = model.X[index,input_1] - y = model.X[index,input_2] + x = model.X[index, input_1] + y = model.X[index, input_2] ax.scatter(x, y, marker=m, s=s, color=util.plot.Tango.nextMedium(), label=this_label) - ax.set_xlabel('latent dimension %i'%input_1) - ax.set_ylabel('latent dimension %i'%input_2) + ax.set_xlabel('latent dimension %i' % input_1) + ax.set_ylabel('latent dimension %i' % input_2) - if not np.all(labels==1.): - ax.legend(loc=0,numpoints=1) + if not np.all(labels == 1.) and legend: + ax.legend(loc=0, numpoints=1) - ax.set_xlim(xmin[0],xmax[0]) - ax.set_ylim(xmin[1],xmax[1]) + ax.set_xlim(xmin[0], xmax[0]) + ax.set_ylim(xmin[1], xmax[1]) ax.grid(b=False) # remove the grid if present, it doesn't look good ax.set_aspect('auto') # set a nice aspect ratio - return ax - - -def plot_latent_indices(Model, which_indices=None, *args, **kwargs): - - if which_indices is None: - try: - input_1, input_2 = np.argsort(Model.input_sensitivity())[:2] - except: - raise ValueError, "cannot Automatically determine which dimensions to plot, please pass 'which_indices'" - else: - input_1, input_2 = which_indices - ax = plot_latent(Model, which_indices=[input_1, input_2], *args, **kwargs) - # TODO: Here test if there are inducing points... - ax.plot(Model.Z[:, input_1], Model.Z[:, input_2], '^w') + + if plot_inducing: + ax.plot(model.Z[:, input_1], model.Z[:, input_2], '^w') + return ax From 12640a2d1710a24798b4e51a1865e6e37202bc47 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Fri, 28 Jun 2013 11:02:15 +0100 Subject: [PATCH 017/135] plot ard ticks improved --- GPy/kern/kern.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/GPy/kern/kern.py b/GPy/kern/kern.py index 4bb4752f..5cd90749 100644 --- a/GPy/kern/kern.py +++ b/GPy/kern/kern.py @@ -82,9 +82,10 @@ class kern(Parameterized): else: ard_params = 1. / p.lengthscale - ax.bar(np.arange(len(ard_params)) - 0.4, ard_params) - ax.set_xticks(np.arange(len(ard_params))) - ax.set_xticklabels([r"${}$".format(i) for i in range(len(ard_params))]) + x = np.arange(len(ard_params)) + ax.bar(x - 0.4, ard_params) + ax.set_xticks(x) + ax.set_xticklabels([r"${}$".format(i) for i in x]) return ax def _transform_gradients(self, g): From 29746cd8bed28197be8255e2742aa1bd05e3e7c0 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Fri, 28 Jun 2013 11:02:59 +0100 Subject: [PATCH 018/135] added value restoring if unpickling objects --- GPy/core/parameterized.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/GPy/core/parameterized.py b/GPy/core/parameterized.py index a2f2bf25..f4d6afa1 100644 --- a/GPy/core/parameterized.py +++ b/GPy/core/parameterized.py @@ -45,7 +45,9 @@ class Parameterized(object): def __setstate__(self, state): if self._has_get_set_state(): - return self.setstate(state) + self.setstate(state) # set state + self._set_params(self._get_params()) # restore all values + return self.__dict__ = state def _has_get_set_state(self): From 96829862ccd2b1053f58eecc25c60989c8201a93 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Fri, 28 Jun 2013 11:13:12 +0100 Subject: [PATCH 019/135] minor printing improvements --- GPy/inference/scg.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/GPy/inference/scg.py b/GPy/inference/scg.py index 680874e4..ba72bf60 100644 --- a/GPy/inference/scg.py +++ b/GPy/inference/scg.py @@ -129,12 +129,17 @@ def SCG(f, gradf, x, optargs=(), maxiters=500, max_f_eval=500, display=True, xto iteration += 1 if display: - n_exps = exponents(fnow, current_grad) - if iteration - p_iter >= 6 and ((iteration >= p_iter * 2.78) or np.any(n_exps < exps)): - exps = n_exps - p_iter = iteration - print '' print_out(len_maxiters, fnow, current_grad, beta, iteration) + n_exps = exponents(fnow, current_grad) + if iteration - p_iter >= 6: + a = iteration >= p_iter * 2.78 + b = np.any(n_exps < exps) + if a or b: + print '' + if a: + p_iter = iteration + if b: + exps = n_exps if success: # Test for termination From a8eb7eb5f7a70faaaef58643e128963082866a33 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Fri, 28 Jun 2013 11:13:20 +0100 Subject: [PATCH 020/135] minor adjustments --- GPy/examples/dimensionality_reduction.py | 7 ++++--- GPy/testing/cgd_tests.py | 1 - 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/GPy/examples/dimensionality_reduction.py b/GPy/examples/dimensionality_reduction.py index 8f6fdbe7..810098fe 100644 --- a/GPy/examples/dimensionality_reduction.py +++ b/GPy/examples/dimensionality_reduction.py @@ -254,7 +254,7 @@ def bgplvm_simulation(optimize='scg', Y = Ylist[0] k = kern.linear(Q, ARD=True) + kern.bias(Q, np.exp(-2)) + kern.white(Q, np.exp(-2)) # + kern.bias(Q) - m = BayesianGPLVM(Y, Q, init="PCA", num_inducing=num_inducing, kernel=k, _debug=True) + m = BayesianGPLVM(Y, Q, init="PCA", num_inducing=num_inducing, kernel=k) # m.constrain('variance|noise', logexp_clipped()) m['noise'] = Y.var() / 100. @@ -279,11 +279,12 @@ def mrd_simulation(optimize=True, plot=True, plot_sim=True, **kw): reload(mrd); reload(kern) - k = kern.linear(Q, [.05] * Q, ARD=True) + kern.bias(Q, np.exp(-2)) + kern.white(Q, np.exp(-2)) + k = kern.linear(Q, ARD=True) + kern.bias(Q, np.exp(-2)) + kern.white(Q, np.exp(-2)) m = mrd.MRD(Ylist, input_dim=Q, num_inducing=num_inducing, kernels=k, initx="", initz='permute', **kw) + m.ensure_default_constraints() for i, Y in enumerate(Ylist): - m['{}_noise'.format(i + 1)] = Y.var() / 100. + m['{}_noise'.format(i)] = Y.var() / 100. # DEBUG diff --git a/GPy/testing/cgd_tests.py b/GPy/testing/cgd_tests.py index d999c6fc..82041c9f 100644 --- a/GPy/testing/cgd_tests.py +++ b/GPy/testing/cgd_tests.py @@ -7,7 +7,6 @@ import unittest import numpy from GPy.inference.conjugate_gradient_descent import CGD, RUNNING import pylab -import time from scipy.optimize.optimize import rosen, rosen_der from GPy.inference.gradient_descent_update_rules import PolakRibiere From db7485b906cb2d1d0fb740002b206c68825c64c5 Mon Sep 17 00:00:00 2001 From: James Hensman Date: Mon, 8 Jul 2013 13:06:02 +0100 Subject: [PATCH 021/135] fixed a bug in constructor of periodic_matern52 --- GPy/core/gp_base.py | 24 ++++++++++++++++++------ GPy/examples/regression.py | 6 +++--- GPy/kern/constructors.py | 6 +++--- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/GPy/core/gp_base.py b/GPy/core/gp_base.py index b82f3298..63568968 100644 --- a/GPy/core/gp_base.py +++ b/GPy/core/gp_base.py @@ -91,12 +91,14 @@ class GPBase(Model): else: raise NotImplementedError, "Cannot define a frame with more than two input dimensions" - def plot(self, plot_limits=None, which_data='all', which_parts='all', resolution=None, levels=20, samples=0, fignum=None, ax=None): + def plot(self, plot_limits=None, which_data='all', which_parts='all', resolution=None, levels=20, samples=0, fignum=None, ax=None, fixed_inputs=[], linecol=Tango.colorsHex['darkBlue'],fillcol=Tango.colorsHex['lightBlue']): """ TODO: Docstrings! :param levels: for 2D plotting, the number of contour levels to use is ax is None, create a new figure + + fixed_inputs: a list of tuple [(i,v), (i,v)...], specifying that input index i should be set to value v. """ # TODO include samples if which_data == 'all': @@ -106,15 +108,25 @@ class GPBase(Model): fig = pb.figure(num=fignum) ax = fig.add_subplot(111) - if self.X.shape[1] == 1: + plotdims = self.input_dim - len(fixed_inputs) + + if plotdims == 1: Xu = self.X * self._Xscale + self._Xoffset # NOTE self.X are the normalized values now - Xnew, xmin, xmax = x_frame1D(Xu, plot_limits=plot_limits) - m, _, lower, upper = self.predict(Xnew, which_parts=which_parts) + fixed_dims = np.array([i for i,v in fixed_inputs]) + freedim = np.setdiff1d(np.arange(self.input_dim),fixed_dims) + + Xnew, xmin, xmax = x_frame1D(Xu[:,freedim], plot_limits=plot_limits) + Xgrid = np.empty((Xnew.shape[0],self.input_dim)) + Xgrid[:,freedim] = Xnew + for i,v in fixed_inputs: + Xgrid[:,i] = v + + m, _, lower, upper = self.predict(Xgrid, which_parts=which_parts) for d in range(m.shape[1]): - gpplot(Xnew, m[:, d], lower[:, d], upper[:, d], axes=ax) - ax.plot(Xu[which_data], self.likelihood.data[which_data, d], 'kx', mew=1.5) + gpplot(Xnew, m[:, d], lower[:, d], upper[:, d], axes=ax, edgecol=linecol, fillcol=fillcol) + ax.plot(Xu[which_data,freedim], self.likelihood.data[which_data, d], 'kx', mew=1.5) ymin, ymax = min(np.append(self.likelihood.data, lower)), max(np.append(self.likelihood.data, upper)) ymin, ymax = ymin - 0.1 * (ymax - ymin), ymax + 0.1 * (ymax - ymin) ax.set_xlim(xmin, xmax) diff --git a/GPy/examples/regression.py b/GPy/examples/regression.py index 21b435e7..452167ce 100644 --- a/GPy/examples/regression.py +++ b/GPy/examples/regression.py @@ -83,7 +83,7 @@ def coregionalisation_toy2(optim_iters=100): Y = np.vstack((Y1,Y2)) k1 = GPy.kern.rbf(1) + GPy.kern.bias(1) - k2 = GPy.kern.Coregionalise(2,1) + k2 = GPy.kern.coregionalise(2,1) k = k1.prod(k2,tensor=True) m = GPy.models.GPRegression(X,Y,kernel=k) m.constrain_fixed('.*rbf_var',1.) @@ -114,7 +114,7 @@ def coregionalisation_toy(optim_iters=100): Y = np.vstack((Y1,Y2)) k1 = GPy.kern.rbf(1) - k2 = GPy.kern.Coregionalise(2,2) + k2 = GPy.kern.coregionalise(2,2) k = k1.prod(k2,tensor=True) m = GPy.models.GPRegression(X,Y,kernel=k) m.constrain_fixed('.*rbf_var',1.) @@ -149,7 +149,7 @@ def coregionalisation_sparse(optim_iters=100): Z = np.hstack((np.random.rand(num_inducing,1)*8,np.random.randint(0,2,num_inducing)[:,None])) k1 = GPy.kern.rbf(1) - k2 = GPy.kern.Coregionalise(2,2) + k2 = GPy.kern.coregionalise(2,2) k = k1.prod(k2,tensor=True) + GPy.kern.white(2,0.001) m = GPy.models.SparseGPRegression(X,Y,kernel=k,Z=Z) diff --git a/GPy/kern/constructors.py b/GPy/kern/constructors.py index 697f3554..d1e2885a 100644 --- a/GPy/kern/constructors.py +++ b/GPy/kern/constructors.py @@ -227,7 +227,7 @@ def periodic_Matern52(input_dim, variance=1., lengthscale=None, period=2 * np.pi :param n_freq: the number of frequencies considered for the periodic subspace :type n_freq: int """ - part = parts.periodic_Matern52part(input_dim, variance, lengthscale, period, n_freq, lower, upper) + part = parts.periodic_Matern52.PeriodicMatern52(input_dim, variance, lengthscale, period, n_freq, lower, upper) return kern(input_dim, [part]) def prod(k1,k2,tensor=False): @@ -296,5 +296,5 @@ def independent_outputs(k): """ for sl in k.input_slices: assert (sl.start is None) and (sl.stop is None), "cannot adjust input slices! (TODO)" - parts = [independent_outputs.IndependentOutputs(p) for p in k.parts] - return kern(k.input_dim+1,parts) + _parts = [parts.independent_outputs.IndependentOutputs(p) for p in k.parts] + return kern(k.input_dim+1,_parts) From 58a59dcab081c4f07a3c6992f126cc7d0f5d867e Mon Sep 17 00:00:00 2001 From: James Hensman Date: Mon, 8 Jul 2013 14:20:42 +0100 Subject: [PATCH 022/135] created a hierarchical kernel --- GPy/kern/parts/hierarchical.py | 75 ++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 GPy/kern/parts/hierarchical.py diff --git a/GPy/kern/parts/hierarchical.py b/GPy/kern/parts/hierarchical.py new file mode 100644 index 00000000..98f4a183 --- /dev/null +++ b/GPy/kern/parts/hierarchical.py @@ -0,0 +1,75 @@ +# Copyright (c) 2012, James Hesnsman +# Licensed under the BSD 3-clause license (see LICENSE.txt) + +from kernpart import Kernpart +import numpy as np +from independent_outputs import index_to_slices + +class hierarchical(Kernpart): + """ + A kernel part which can reopresent a hierarchy of indepencnce: a gerenalisation of independent_outputs + + """ + def __init__(self,parts): + self.levels = len(parts) + self.input_dim = parts[0].input_dim + 1 + self.num_params = np.sum([k.num_params for k in parts]) + self.name = 'hierarchy' + self.parts = parts + + self.param_starts = np.hstack((0,np.cumsum([k.num_params for k in self.parts[:-1]]))) + self.param_stops = np.cumsum([k.num_params for k in self.parts]) + + def _get_params(self): + return np.hstack([k._get_params() for k in self.parts]) + + def _set_params(self,x): + [k._set_params(x[start:stop]) for start, stop in zip(self.param_starts, self.param_stops)] + + def _get_param_names(self): + return self.k._get_param_names() + + def _sort_slices(self,X,X2): + slices = [index_to_slices(x) for x in X[-self.levels:].T] + X = X[:-self.levels] + if X2 is None: + slices2 = slices + X2 = X + else: + slices2 = [index_to_slices(x) for x in X2[-self.levels:].T] + X2 = X2[:-self.levels] + return X, X2, slices, slices2 + + def K(self,X,X2,target): + X, X2, slices, slices2 = self._sort_slices(X,X2) + + [[[k.K(X[s],X2[s2],target[s,s2]) for s in slices_i] for s2 in slices_j] for k,slices_i,slices_j in zip(self.parts,slices,slices2)] + + def Kdiag(self,X,target): + raise NotImplementedError + #X,slices = X[:,:-1],index_to_slices(X[:,-1]) + #[[self.k.Kdiag(X[s],target[s]) for s in slices_i] for slices_i in slices] + + def dK_dtheta(self,dL_dK,X,X2,target): + [[[k.dK_dtheta(dL_dK[s,s2],X[s],X2[s2],target[p_start:p_stop]) for s in slices_i] for s2 in slices_j] for k,slices_i,slices_j, p_start, p_stop in zip(self.parts, slices, slices2, self.param_starts, self.param_stops)] + + + def dK_dX(self,dL_dK,X,X2,target): + raise NotImplementedError + #X,slices = X[:,:-1],index_to_slices(X[:,-1]) + #if X2 is None: + #X2,slices2 = X,slices + #else: + #X2,slices2 = X2[:,:-1],index_to_slices(X2[:,-1]) + #[[[self.k.dK_dX(dL_dK[s,s2],X[s],X2[s2],target[s,:-1]) for s in slices_i] for s2 in slices_j] for slices_i,slices_j in zip(slices,slices2)] +# + def dKdiag_dX(self,dL_dKdiag,X,target): + raise NotImplementedError + #X,slices = X[:,:-1],index_to_slices(X[:,-1]) + #[[self.k.dKdiag_dX(dL_dKdiag[s],X[s],target[s,:-1]) for s in slices_i] for slices_i in slices] + + + def dKdiag_dtheta(self,dL_dKdiag,X,target): + raise NotImplementedError + #X,slices = X[:,:-1],index_to_slices(X[:,-1]) + #[[self.k.dKdiag_dX(dL_dKdiag[s],X[s],target) for s in slices_i] for slices_i in slices] From 074529c1c07df5778a090939c16bf68e2cac0c12 Mon Sep 17 00:00:00 2001 From: Nicolo Fusi Date: Mon, 8 Jul 2013 14:27:32 +0100 Subject: [PATCH 023/135] changes to multiout constructor --- GPy/kern/constructors.py | 4 ++-- GPy/models/warped_gp.py | 22 ++++++++++++++++------ GPy/util/warping_functions.py | 8 +++++--- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/GPy/kern/constructors.py b/GPy/kern/constructors.py index 487a324b..8ab00e10 100644 --- a/GPy/kern/constructors.py +++ b/GPy/kern/constructors.py @@ -296,5 +296,5 @@ def independent_outputs(k): """ for sl in k.input_slices: assert (sl.start is None) and (sl.stop is None), "cannot adjust input slices! (TODO)" - parts = [independent_outputs.IndependentOutputs(p) for p in k.parts] - return kern(k.input_dim+1,parts) + new_parts = [parts.independent_outputs.IndependentOutputs(p) for p in k.parts] + return kern(k.input_dim+1,new_parts) diff --git a/GPy/models/warped_gp.py b/GPy/models/warped_gp.py index dc6eeb46..260139a6 100644 --- a/GPy/models/warped_gp.py +++ b/GPy/models/warped_gp.py @@ -19,7 +19,9 @@ class WarpedGP(GP): self.warping_function = TanhWarpingFunction_d(warping_terms) self.warping_params = (np.random.randn(self.warping_function.n_terms * 3 + 1,) * 1) - Y = self._scale_data(Y) + self.scale_data = False + if self.scale_data: + Y = self._scale_data(Y) self.has_uncertain_inputs = False self.Y_untransformed = Y.copy() self.predict_in_warped_space = False @@ -87,11 +89,19 @@ class WarpedGP(GP): def plot_warping(self): self.warping_function.plot(self.warping_params, self.Y_untransformed.min(), self.Y_untransformed.max()) - def _raw_predict(self, *args, **kwargs): - mu, var = GP._raw_predict(self, *args, **kwargs) + def predict(self, Xnew, which_parts='all', full_cov=False, pred_init=None): + # normalize X values + Xnew = (Xnew.copy() - self._Xoffset) / self._Xscale + mu, var = GP._raw_predict(self, Xnew, full_cov=full_cov, which_parts=which_parts) + + # now push through likelihood + mean, var, _025pm, _975pm = self.likelihood.predictive_values(mu, var, full_cov) if self.predict_in_warped_space: - mu = self.warping_function.f_inv(mu, self.warping_params) + mean = self.warping_function.f_inv(mean, self.warping_params, y=pred_init) var = self.warping_function.f_inv(var, self.warping_params) - mu = self._unscale_data(mu) - return mu, var + + if self.scale_data: + mean = self._unscale_data(mean) + + return mean, var, _025pm, _975pm diff --git a/GPy/util/warping_functions.py b/GPy/util/warping_functions.py index 98d4d2b7..f36805a9 100644 --- a/GPy/util/warping_functions.py +++ b/GPy/util/warping_functions.py @@ -185,7 +185,7 @@ class TanhWarpingFunction_d(WarpingFunction): return z - def f_inv(self, z, psi, max_iterations = 1000): + def f_inv(self, z, psi, max_iterations=1000, y=None): """ calculate the numerical inverse of f @@ -195,7 +195,9 @@ class TanhWarpingFunction_d(WarpingFunction): """ z = z.copy() - y = np.ones_like(z) + if y is None: + y = np.ones_like(z) + it = 0 update = np.inf @@ -205,7 +207,7 @@ class TanhWarpingFunction_d(WarpingFunction): it += 1 if it == max_iterations: print "WARNING!!! Maximum number of iterations reached in f_inv " - + return y From f19a26a006b3b1a5910cf3339f3b4f23e1780e97 Mon Sep 17 00:00:00 2001 From: Nicolo Fusi Date: Mon, 8 Jul 2013 14:50:13 +0100 Subject: [PATCH 024/135] added constructor for hierarchical kernel --- GPy/kern/constructors.py | 9 +++++++++ GPy/kern/parts/__init__.py | 1 + GPy/kern/parts/hierarchical.py | 2 +- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/GPy/kern/constructors.py b/GPy/kern/constructors.py index d1e2885a..5ae4e419 100644 --- a/GPy/kern/constructors.py +++ b/GPy/kern/constructors.py @@ -298,3 +298,12 @@ def independent_outputs(k): assert (sl.start is None) and (sl.stop is None), "cannot adjust input slices! (TODO)" _parts = [parts.independent_outputs.IndependentOutputs(p) for p in k.parts] return kern(k.input_dim+1,_parts) + +def hierarchical(k): + """ + Construct a kernel with independent outputs from an existing kernel + """ + # for sl in k.input_slices: + # assert (sl.start is None) and (sl.stop is None), "cannot adjust input slices! (TODO)" + _parts = [parts.hierarchical.Hierarchical(k.parts)] + return kern(k.input_dim+1,_parts) diff --git a/GPy/kern/parts/__init__.py b/GPy/kern/parts/__init__.py index 68762afc..f9b40888 100644 --- a/GPy/kern/parts/__init__.py +++ b/GPy/kern/parts/__init__.py @@ -19,3 +19,4 @@ import rbf import spline import symmetric import white +import hierarchical diff --git a/GPy/kern/parts/hierarchical.py b/GPy/kern/parts/hierarchical.py index 98f4a183..db495ba7 100644 --- a/GPy/kern/parts/hierarchical.py +++ b/GPy/kern/parts/hierarchical.py @@ -5,7 +5,7 @@ from kernpart import Kernpart import numpy as np from independent_outputs import index_to_slices -class hierarchical(Kernpart): +class Hierarchical(Kernpart): """ A kernel part which can reopresent a hierarchy of indepencnce: a gerenalisation of independent_outputs From 3ad48534c8212886739444c71b56c06f2e182583 Mon Sep 17 00:00:00 2001 From: James Hensman Date: Mon, 8 Jul 2013 15:29:37 +0100 Subject: [PATCH 025/135] changes to the hierarchical kernpart. Looks to work now. --- GPy/kern/constructors.py | 2 +- GPy/kern/parts/hierarchical.py | 17 +++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/GPy/kern/constructors.py b/GPy/kern/constructors.py index 5ae4e419..724c13cc 100644 --- a/GPy/kern/constructors.py +++ b/GPy/kern/constructors.py @@ -306,4 +306,4 @@ def hierarchical(k): # for sl in k.input_slices: # assert (sl.start is None) and (sl.stop is None), "cannot adjust input slices! (TODO)" _parts = [parts.hierarchical.Hierarchical(k.parts)] - return kern(k.input_dim+1,_parts) + return kern(k.input_dim+len(k.parts),_parts) diff --git a/GPy/kern/parts/hierarchical.py b/GPy/kern/parts/hierarchical.py index db495ba7..ab96fdd7 100644 --- a/GPy/kern/parts/hierarchical.py +++ b/GPy/kern/parts/hierarchical.py @@ -24,26 +24,26 @@ class Hierarchical(Kernpart): return np.hstack([k._get_params() for k in self.parts]) def _set_params(self,x): - [k._set_params(x[start:stop]) for start, stop in zip(self.param_starts, self.param_stops)] + [k._set_params(x[start:stop]) for k, start, stop in zip(self.parts, self.param_starts, self.param_stops)] def _get_param_names(self): - return self.k._get_param_names() + return sum([[str(i)+'_'+k.name+'_'+n for n in k._get_param_names()] for i,k in enumerate(self.parts)],[]) def _sort_slices(self,X,X2): - slices = [index_to_slices(x) for x in X[-self.levels:].T] - X = X[:-self.levels] + slices = [index_to_slices(x) for x in X[:,-self.levels:].T] + X = X[:,:-self.levels] if X2 is None: slices2 = slices X2 = X else: - slices2 = [index_to_slices(x) for x in X2[-self.levels:].T] - X2 = X2[:-self.levels] + slices2 = [index_to_slices(x) for x in X2[:,-self.levels:].T] + X2 = X2[:,:-self.levels] return X, X2, slices, slices2 def K(self,X,X2,target): X, X2, slices, slices2 = self._sort_slices(X,X2) - [[[k.K(X[s],X2[s2],target[s,s2]) for s in slices_i] for s2 in slices_j] for k,slices_i,slices_j in zip(self.parts,slices,slices2)] + [[[[k.K(X[s],X2[s2],target[s,s2]) for s in slices_i] for s2 in slices_j] for slices_i,slices_j in zip(slices_,slices2_)] for k, slices_, slices2_ in zip(self.parts,slices,slices2)] def Kdiag(self,X,target): raise NotImplementedError @@ -51,7 +51,8 @@ class Hierarchical(Kernpart): #[[self.k.Kdiag(X[s],target[s]) for s in slices_i] for slices_i in slices] def dK_dtheta(self,dL_dK,X,X2,target): - [[[k.dK_dtheta(dL_dK[s,s2],X[s],X2[s2],target[p_start:p_stop]) for s in slices_i] for s2 in slices_j] for k,slices_i,slices_j, p_start, p_stop in zip(self.parts, slices, slices2, self.param_starts, self.param_stops)] + X, X2, slices, slices2 = self._sort_slices(X,X2) + [[[[k.dK_dtheta(dL_dK[s,s2],X[s],X2[s2],target[p_start:p_stop]) for s in slices_i] for s2 in slices_j] for slices_i,slices_j in zip(slices_, slices2_)] for k, p_start, p_stop, slices_, slices2_ in zip(self.parts, self.param_starts, self.param_stops, slices, slices2)] def dK_dX(self,dL_dK,X,X2,target): From 69e31f3dc1ef9d2db5b687560211916f80013864 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Wed, 10 Jul 2013 16:49:45 +0100 Subject: [PATCH 026/135] SCG optimizer now greatly improved in printing --- GPy/inference/scg.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/GPy/inference/scg.py b/GPy/inference/scg.py index ba72bf60..7c8dda8d 100644 --- a/GPy/inference/scg.py +++ b/GPy/inference/scg.py @@ -35,7 +35,7 @@ def exponents(fnow, current_grad): exps = [np.abs(fnow), current_grad] return np.sign(exps) * np.log10(exps).astype(int) -def SCG(f, gradf, x, optargs=(), maxiters=500, max_f_eval=500, display=True, xtol=None, ftol=None, gtol=None): +def SCG(f, gradf, x, optargs=(), maxiters=500, max_f_eval=np.inf, display=True, xtol=None, ftol=None, gtol=None): """ Optimisation through Scaled Conjugate Gradients (SCG) @@ -68,7 +68,7 @@ def SCG(f, gradf, x, optargs=(), maxiters=500, max_f_eval=500, display=True, xto nsuccess = 0 # nsuccess counts number of successes. beta = 1.0 # Initial scale parameter. betamin = 1.0e-60 # Lower bound on scale. - betamax = 1.0e100 # Upper bound on scale. + betamax = 1.0e50 # Upper bound on scale. status = "Not converged" flog = [fold] @@ -109,9 +109,9 @@ def SCG(f, gradf, x, optargs=(), maxiters=500, max_f_eval=500, display=True, xto fnew = f(xnew, *optargs) function_eval += 1 - if function_eval >= max_f_eval: - status = "maximum number of function evaluations exceeded" - break +# if function_eval >= max_f_eval: +# status = "maximum number of function evaluations exceeded" +# break # return x, flog, function_eval, status Delta = 2.*(fnew - fold) / (alpha * mu) @@ -131,13 +131,12 @@ def SCG(f, gradf, x, optargs=(), maxiters=500, max_f_eval=500, display=True, xto if display: print_out(len_maxiters, fnow, current_grad, beta, iteration) n_exps = exponents(fnow, current_grad) - if iteration - p_iter >= 6: + if iteration - p_iter >= 20 * np.random.rand(): a = iteration >= p_iter * 2.78 b = np.any(n_exps < exps) if a or b: - print '' - if a: p_iter = iteration + print '' if b: exps = n_exps @@ -184,7 +183,6 @@ def SCG(f, gradf, x, optargs=(), maxiters=500, max_f_eval=500, display=True, xto status = "maxiter exceeded" if display: - print "" print_out(len_maxiters, fnow, current_grad, beta, iteration) print "" print status From e8f2bec195c124da625863fd4e34565c98666765 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Wed, 10 Jul 2013 16:49:51 +0100 Subject: [PATCH 027/135] SCG optimizer now greatly improved in printing --- GPy/inference/optimization.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/GPy/inference/optimization.py b/GPy/inference/optimization.py index 433d5f41..0ef487af 100644 --- a/GPy/inference/optimization.py +++ b/GPy/inference/optimization.py @@ -4,6 +4,7 @@ import pylab as pb import datetime as dt from scipy import optimize +from warnings import warn try: import rasmussens_minimize as rasm @@ -198,17 +199,22 @@ class opt_rasm(Optimizer): class opt_SCG(Optimizer): def __init__(self, *args, **kwargs): + if 'max_f_eval' in kwargs: + warn("max_f_eval deprecated for SCG optimizer: use max_iters instead!\nIgnoring max_f_eval!", FutureWarning) Optimizer.__init__(self, *args, **kwargs) + self.opt_name = "Scaled Conjugate Gradients" def opt(self, f_fp=None, f=None, fp=None): assert not f is None assert not fp is None + opt_result = SCG(f, fp, self.x_init, display=self.messages, maxiters=self.max_iters, max_f_eval=self.max_f_eval, xtol=self.xtol, ftol=self.ftol, gtol=self.gtol) + self.x_opt = opt_result[0] self.trace = opt_result[1] self.f_opt = self.trace[-1] From 266ec23f8a9872d535412e133cd2187da7402b56 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Wed, 10 Jul 2013 16:51:41 +0100 Subject: [PATCH 028/135] GPLVM get/setstate added --- GPy/models/gplvm.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/GPy/models/gplvm.py b/GPy/models/gplvm.py index 305ad120..2e81b370 100644 --- a/GPy/models/gplvm.py +++ b/GPy/models/gplvm.py @@ -41,6 +41,12 @@ class GPLVM(GP): else: return np.random.randn(Y.shape[0], input_dim) + def getstate(self): + return GP.getstate(self) + + def setstate(self, state): + GP.setstate(self, state) + def _get_param_names(self): return sum([['X_%i_%i' % (n, q) for q in range(self.input_dim)] for n in range(self.num_data)], []) + GP._get_param_names(self) From be5a43a2c212a128144d1815bb5997f6216801ae Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Wed, 10 Jul 2013 16:52:20 +0100 Subject: [PATCH 029/135] improved docstring for MRD --- GPy/models/mrd.py | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/GPy/models/mrd.py b/GPy/models/mrd.py index 327c198f..228494aa 100644 --- a/GPy/models/mrd.py +++ b/GPy/models/mrd.py @@ -18,29 +18,25 @@ class MRD(Model): All Ys in likelihood_list are in [N x Dn], where Dn can be different per Yn, N must be shared across datasets though. - :param likelihood_list...: likelihoods of observed datasets - :type likelihood_list: [GPy.likelihood] | [Y1..Yy] + :param likelihood_list: list of observed datasets (:py:class:`~GPy.likelihoods.gaussian.Gaussian` if not supplied directly) + :type likelihood_list: [:py:class:`~GPy.likelihoods.likelihood.likelihood` | :py:class:`ndarray`] :param names: names for different gplvm models :type names: [str] - :param input_dim: latent dimensionality (will raise + :param input_dim: latent dimensionality :type input_dim: int - :param initx: initialisation method for the latent space - :type initx: 'PCA'|'random' + :param initx: initialisation method for the latent space : + + * 'concat' - PCA on concatenation of all datasets + * 'single' - Concatenation of PCA on datasets, respectively + * 'random' - Random draw from a normal + + :type initx: ['concat'|'single'|'random'] :param initz: initialisation method for inducing inputs :type initz: 'permute'|'random' - :param X: - Initial latent space - :param X_variance: - Initial latent space variance - :param init: [cooncat|single|random] - initialization method to use: - *concat: PCA on concatenated outputs - *single: PCA on each output - *random: random - :param num_inducing: - number of inducing inputs to use - :param Z: - initial inducing inputs + :param X: Initial latent space + :param X_variance: Initial latent space variance + :param Z: initial inducing inputs + :param num_inducing: number of inducing inputs to use :param kernels: list of kernels or kernel shared for all BGPLVMS :type kernels: [GPy.kern.kern] | GPy.kern.kern | None (default) """ From 274370de567204d667dbe7d4ee9ce832110137b1 Mon Sep 17 00:00:00 2001 From: James Hensman Date: Fri, 12 Jul 2013 20:13:44 +0100 Subject: [PATCH 030/135] added the 2 pi term to the likelihood of the gp Why the hell was this missing? --- GPy/core/gp.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GPy/core/gp.py b/GPy/core/gp.py index a0e60bcc..847cd99d 100644 --- a/GPy/core/gp.py +++ b/GPy/core/gp.py @@ -96,7 +96,7 @@ class GP(GPBase): model for a new variable Y* = v_tilde/tau_tilde, with a covariance matrix K* = K + diag(1./tau_tilde) plus a normalization term. """ - return -0.5 * self.output_dim * self.K_logdet + self._model_fit_term() + self.likelihood.Z + return - 0.5 * self.num_data * self.output_dim * np.log(2.*np.pi) - 0.5 * self.output_dim * self.K_logdet + self._model_fit_term() + self.likelihood.Z def _log_likelihood_gradients(self): From 77de03f2a15dc5beaf8ec209edb377a9c6cc1b17 Mon Sep 17 00:00:00 2001 From: Andreas Date: Sun, 14 Jul 2013 20:43:46 +0100 Subject: [PATCH 031/135] Added ARD demo --- GPy/examples/regression.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/GPy/examples/regression.py b/GPy/examples/regression.py index 452167ce..8b58c6d4 100644 --- a/GPy/examples/regression.py +++ b/GPy/examples/regression.py @@ -57,6 +57,41 @@ def toy_rbf_1d_50(optim_iters=100): print(m) return m +def toy_ARD(optim_iters=1000, kernel_type='linear', N=300, D=4): + # Create an artificial dataset where the values in the targets (Y) + # only depend in dimensions 1 and 3 of the inputs (X). Run ARD to + # see if this dependency can be recovered + X1 = np.sin(np.sort(np.random.rand(N,1)*10,0)) + X2 = np.cos(np.sort(np.random.rand(N,1)*10,0)) + X3 = np.exp(np.sort(np.random.rand(N,1),0)) + X4 = np.log(np.sort(np.random.rand(N,1),0)) + X = np.hstack((X1, X2, X3, X4)) + + Y1 = np.asmatrix(2*X[:,0]+3).T + Y2 = np.asmatrix(4*(X[:,2]-1.5*X[:,0])).T + Y = np.hstack((Y1, Y2)) + + Y = np.dot(Y, np.random.rand(2,D)); + Y = Y + 0.2*np.random.randn(Y.shape[0], Y.shape[1]) + Y -= Y.mean() + Y /= Y.std() + + if kernel_type == 'linear': + kernel = GPy.kern.linear(X.shape[1], ARD = 1) + else: + kernel = GPy.kern.rbf(X.shape[1], ARD = 1) + kernel += GPy.kern.white(X.shape[1]) + GPy.kern.bias(X.shape[1]) + m = GPy.models.GPRegression(X, Y, kernel) + #len_prior = GPy.priors.inverse_gamma(1,18) # 1, 25 + #m.set_prior('.*lengthscale',len_prior) + + m.optimize(optimizer = 'scg', max_iters = optim_iters, max_f_eval=optim_iters, messages = 1) + + m.kern.plot_ARD() + print(m) + return m + + def silhouette(optim_iters=100): """Predict the pose of a figure given a silhouette. This is a task from Agarwal and Triggs 2004 ICML paper.""" data = GPy.util.datasets.silhouette() From 13e0762e18d9cf226f2f824228564e7679d3d76e Mon Sep 17 00:00:00 2001 From: Andreas Date: Sun, 14 Jul 2013 21:35:45 +0100 Subject: [PATCH 032/135] Fixed max_iters argument for scg --- GPy/examples/dimensionality_reduction.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/GPy/examples/dimensionality_reduction.py b/GPy/examples/dimensionality_reduction.py index 810098fe..8d7e5995 100644 --- a/GPy/examples/dimensionality_reduction.py +++ b/GPy/examples/dimensionality_reduction.py @@ -114,7 +114,7 @@ def swiss_roll(optimize=True, N=1000, num_inducing=15, Q=4, sigma=.2, plot=False m.optimize('scg', messages=1) return m -def BGPLVM_oil(optimize=True, N=200, Q=10, num_inducing=15, max_f_eval=50, plot=False, **k): +def BGPLVM_oil(optimize=True, N=200, Q=10, num_inducing=15, max_iters=50, plot=False, **k): np.random.seed(0) data = GPy.util.datasets.oil() @@ -135,9 +135,9 @@ def BGPLVM_oil(optimize=True, N=200, Q=10, num_inducing=15, max_f_eval=50, plot= # optimize if optimize: m.constrain_fixed('noise') - m.optimize('scg', messages=1, max_f_eval=100, gtol=.05) + m.optimize('scg', messages=1, max_iters=100, gtol=.05) m.constrain_positive('noise') - m.optimize('scg', messages=1, max_f_eval=max_f_eval, gtol=.05) + m.optimize('scg', messages=1, max_iters=max_iters, gtol=.05) if plot: y = m.likelihood.Y[0, :] From 4eff55268850af4d210abe41722a1366fc26b63f Mon Sep 17 00:00:00 2001 From: Andreas Date: Mon, 15 Jul 2013 14:56:24 +0100 Subject: [PATCH 033/135] Removed depricated max_f_eval from bgplvm_simulation --- GPy/examples/dimensionality_reduction.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/GPy/examples/dimensionality_reduction.py b/GPy/examples/dimensionality_reduction.py index 8d7e5995..2632a804 100644 --- a/GPy/examples/dimensionality_reduction.py +++ b/GPy/examples/dimensionality_reduction.py @@ -241,7 +241,7 @@ def bgplvm_simulation_matlab_compare(): def bgplvm_simulation(optimize='scg', plot=True, - max_f_eval=2e4): + max_iters=2e4): # from GPy.core.transformations import logexp_clipped D1, D2, D3, N, num_inducing, Q = 15, 8, 8, 100, 3, 5 slist, Slist, Ylist = _simulate_sincos(D1, D2, D3, N, num_inducing, Q, plot) @@ -262,8 +262,7 @@ def bgplvm_simulation(optimize='scg', if optimize: print "Optimizing model:" - m.optimize(optimize, max_iters=max_f_eval, - max_f_eval=max_f_eval, + m.optimize(optimize, max_iters=max_iters, messages=True, gtol=.05) if plot: m.plot_X_1d("BGPLVM Latent Space 1D") From e798eaa34bf9250c5d4b9f1b413651a727bec747 Mon Sep 17 00:00:00 2001 From: Andreas Date: Mon, 15 Jul 2013 18:13:01 +0100 Subject: [PATCH 034/135] removed depricated max_f_eval --- GPy/examples/regression.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GPy/examples/regression.py b/GPy/examples/regression.py index 8b58c6d4..35b9d71a 100644 --- a/GPy/examples/regression.py +++ b/GPy/examples/regression.py @@ -85,7 +85,7 @@ def toy_ARD(optim_iters=1000, kernel_type='linear', N=300, D=4): #len_prior = GPy.priors.inverse_gamma(1,18) # 1, 25 #m.set_prior('.*lengthscale',len_prior) - m.optimize(optimizer = 'scg', max_iters = optim_iters, max_f_eval=optim_iters, messages = 1) + m.optimize(optimizer = 'scg', max_iters = optim_iters, messages = 1) m.kern.plot_ARD() print(m) From edfd6ea94802c1962468fef31b2a155e6606fadb Mon Sep 17 00:00:00 2001 From: Andreas Date: Mon, 15 Jul 2013 19:23:48 +0100 Subject: [PATCH 035/135] small mod in toy_ARD --- GPy/examples/regression.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/GPy/examples/regression.py b/GPy/examples/regression.py index 35b9d71a..2d7d1cf2 100644 --- a/GPy/examples/regression.py +++ b/GPy/examples/regression.py @@ -78,6 +78,8 @@ def toy_ARD(optim_iters=1000, kernel_type='linear', N=300, D=4): if kernel_type == 'linear': kernel = GPy.kern.linear(X.shape[1], ARD = 1) + elif kernel_type == 'rbf_inv': + kernel = GPy.kern.rbf_inv(X.shape[1], ARD = 1) else: kernel = GPy.kern.rbf(X.shape[1], ARD = 1) kernel += GPy.kern.white(X.shape[1]) + GPy.kern.bias(X.shape[1]) From ffd87898e603eb9bd8a081feaab28c2a402dc9a6 Mon Sep 17 00:00:00 2001 From: Andreas Date: Mon, 15 Jul 2013 19:35:03 +0100 Subject: [PATCH 036/135] Added sparseGPLVM in the init of models --- GPy/models/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/GPy/models/__init__.py b/GPy/models/__init__.py index 885372a1..ea78a011 100644 --- a/GPy/models/__init__.py +++ b/GPy/models/__init__.py @@ -8,6 +8,7 @@ from svigp_regression import SVIGPRegression from sparse_gp_classification import SparseGPClassification from fitc_classification import FITCClassification from gplvm import GPLVM +from sparse_gplvm import SparseGPLVM from warped_gp import WarpedGP from bayesian_gplvm import BayesianGPLVM from mrd import MRD From 63bf417e990aac33610d34b02fae5ed4e767e43e Mon Sep 17 00:00:00 2001 From: Andreas Date: Mon, 15 Jul 2013 19:35:52 +0100 Subject: [PATCH 037/135] Added sparseGPLVM_oil example --- GPy/examples/dimensionality_reduction.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/GPy/examples/dimensionality_reduction.py b/GPy/examples/dimensionality_reduction.py index 2632a804..ac39fd66 100644 --- a/GPy/examples/dimensionality_reduction.py +++ b/GPy/examples/dimensionality_reduction.py @@ -60,6 +60,28 @@ def GPLVM_oil_100(optimize=True): m.plot_latent(labels=m.data_labels) return m +def sparseGPLVM_oil(optimize=True, N=100, Q=6, num_inducing=15, max_iters=50): + np.random.seed(0) + data = GPy.util.datasets.oil() + + Y = data['X'][:N] + Y = Y - Y.mean(0) + Y /= Y.std(0) + + # create simple GP model + kernel = GPy.kern.rbf(Q, ARD=True) + GPy.kern.bias(Q) + m = GPy.models.SparseGPLVM(Y, Q, kernel=kernel, num_inducing = num_inducing) + m.data_labels = data['Y'].argmax(axis=1) + + # optimize + if optimize: + m.optimize('scg', messages=1, max_iters = max_iters) + + # plot + print(m) + #m.plot_latent(labels=m.data_labels) + return m + def swiss_roll(optimize=True, N=1000, num_inducing=15, Q=4, sigma=.2, plot=False): from GPy.util.datasets import swiss_roll_generated from GPy.core.transformations import logexp_clipped From 98318a3fdd4a88a52a026d9c60122e1d3fd23ec2 Mon Sep 17 00:00:00 2001 From: Andreas Date: Mon, 15 Jul 2013 20:09:26 +0100 Subject: [PATCH 038/135] Added toy_ARD_sparse.py --- GPy/examples/regression.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/GPy/examples/regression.py b/GPy/examples/regression.py index 2d7d1cf2..db22cb0b 100644 --- a/GPy/examples/regression.py +++ b/GPy/examples/regression.py @@ -93,6 +93,42 @@ def toy_ARD(optim_iters=1000, kernel_type='linear', N=300, D=4): print(m) return m +def toy_ARD_sparse(optim_iters=1000, kernel_type='linear', N=300, D=4): + # Create an artificial dataset where the values in the targets (Y) + # only depend in dimensions 1 and 3 of the inputs (X). Run ARD to + # see if this dependency can be recovered + X1 = np.sin(np.sort(np.random.rand(N,1)*10,0)) + X2 = np.cos(np.sort(np.random.rand(N,1)*10,0)) + X3 = np.exp(np.sort(np.random.rand(N,1),0)) + X4 = np.log(np.sort(np.random.rand(N,1),0)) + X = np.hstack((X1, X2, X3, X4)) + + Y1 = np.asmatrix(2*X[:,0]+3).T + Y2 = np.asmatrix(4*(X[:,2]-1.5*X[:,0])).T + Y = np.hstack((Y1, Y2)) + + Y = np.dot(Y, np.random.rand(2,D)); + Y = Y + 0.2*np.random.randn(Y.shape[0], Y.shape[1]) + Y -= Y.mean() + Y /= Y.std() + + if kernel_type == 'linear': + kernel = GPy.kern.linear(X.shape[1], ARD = 1) + elif kernel_type == 'rbf_inv': + kernel = GPy.kern.rbf_inv(X.shape[1], ARD = 1) + else: + kernel = GPy.kern.rbf(X.shape[1], ARD = 1) + kernel += GPy.kern.white(X.shape[1]) + GPy.kern.bias(X.shape[1]) + X_variance = np.ones(X.shape)*0.5 + m = GPy.models.SparseGPRegression(X, Y, kernel, X_variance = X_variance) + #len_prior = GPy.priors.inverse_gamma(1,18) # 1, 25 + #m.set_prior('.*lengthscale',len_prior) + + m.optimize(optimizer = 'scg', max_iters = optim_iters, messages = 1) + + m.kern.plot_ARD() + print(m) + return m def silhouette(optim_iters=100): """Predict the pose of a figure given a silhouette. This is a task from Agarwal and Triggs 2004 ICML paper.""" From ea4599f1d0daf6c8697c6bcecd429998a013b986 Mon Sep 17 00:00:00 2001 From: Andreas Date: Mon, 15 Jul 2013 20:12:54 +0100 Subject: [PATCH 039/135] Added rbf_inv.py kernel which is parametrised with the variances --- GPy/kern/constructors.py | 17 +++++++++++++++++ GPy/kern/parts/__init__.py | 1 + 2 files changed, 18 insertions(+) diff --git a/GPy/kern/constructors.py b/GPy/kern/constructors.py index 724c13cc..b549e139 100644 --- a/GPy/kern/constructors.py +++ b/GPy/kern/constructors.py @@ -5,6 +5,23 @@ import numpy as np from kern import kern import parts + +def rbf_inv(input_dim,variance=1., inv_lengthscale=None,ARD=False): + """ + Construct an RBF kernel + + :param input_dim: dimensionality of the kernel, obligatory + :type input_dim: int + :param variance: the variance of the kernel + :type variance: float + :param lengthscale: the lengthscale of the kernel + :type lengthscale: float + :param ARD: Auto Relevance Determination (one lengthscale per dimension) + :type ARD: Boolean + """ + part = parts.rbf_inv.RBFInv(input_dim,variance,inv_lengthscale,ARD) + return kern(input_dim, [part]) + def rbf(input_dim,variance=1., lengthscale=None,ARD=False): """ Construct an RBF kernel diff --git a/GPy/kern/parts/__init__.py b/GPy/kern/parts/__init__.py index f9b40888..e39b70c2 100644 --- a/GPy/kern/parts/__init__.py +++ b/GPy/kern/parts/__init__.py @@ -20,3 +20,4 @@ import spline import symmetric import white import hierarchical +import rbf_inv From 2af17be146f36e98bc97ca072774b592b84e0859 Mon Sep 17 00:00:00 2001 From: Andreas Date: Mon, 15 Jul 2013 20:13:29 +0100 Subject: [PATCH 040/135] Added rbf_inv.py --- GPy/kern/parts/rbf_inv.py | 334 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 334 insertions(+) create mode 100644 GPy/kern/parts/rbf_inv.py diff --git a/GPy/kern/parts/rbf_inv.py b/GPy/kern/parts/rbf_inv.py new file mode 100644 index 00000000..35b6e1a9 --- /dev/null +++ b/GPy/kern/parts/rbf_inv.py @@ -0,0 +1,334 @@ +# Copyright (c) 2012, GPy authors (see AUTHORS.txt). +# Licensed under the BSD 3-clause license (see LICENSE.txt) + + +from kernpart import Kernpart +import numpy as np +import hashlib +from scipy import weave +from ...util.linalg import tdot + +class RBFInv(Kernpart): + """ + Radial Basis Function kernel, aka squared-exponential, exponentiated quadratic or Gaussian kernel: + + .. math:: + + k(r) = \sigma^2 \exp \\bigg(- \\frac{1}{2} r^2 \\bigg) \ \ \ \ \ \\text{ where } r^2 = \sum_{i=1}^d \\frac{ (x_i-x^\prime_i)^2}{\ell_i^2} + + where \ell_i is the lengthscale, \sigma^2 the variance and d the dimensionality of the input. + + :param input_dim: the number of input dimensions + :type input_dim: int + :param variance: the variance of the kernel + :type variance: float + :param lengthscale: the vector of lengthscale of the kernel + :type lengthscale: array or list of the appropriate size (or float if there is only one lengthscale parameter) + :param ARD: Auto Relevance Determination. If equal to "False", the kernel is isotropic (ie. one single lengthscale parameter \ell), otherwise there is one lengthscale parameter per dimension. + :type ARD: Boolean + :rtype: kernel object + + .. Note: this object implements both the ARD and 'spherical' version of the function + """ + + def __init__(self, input_dim, variance=1., inv_lengthscale=None, ARD=False): + self.input_dim = input_dim + self.name = 'rbf' + self.ARD = ARD + if not ARD: + self.num_params = 2 + if inv_lengthscale is not None: + inv_lengthscale = np.asarray(inv_lengthscale) + assert inv_lengthscale.size == 1, "Only one lengthscale needed for non-ARD kernel" + else: + inv_lengthscale = np.ones(1) + else: + self.num_params = self.input_dim + 1 + if inv_lengthscale is not None: + inv_lengthscale = np.asarray(inv_lengthscale) + assert inv_lengthscale.size == self.input_dim, "bad number of lengthscales" + else: + inv_lengthscale = np.ones(self.input_dim) + + self._set_params(np.hstack((variance, inv_lengthscale.flatten()))) + + # initialize cache + self._Z, self._mu, self._S = np.empty(shape=(3, 1)) + self._X, self._X2, self._params = np.empty(shape=(3, 1)) + + # a set of optional args to pass to weave + self.weave_options = {'headers' : [''], + 'extra_compile_args': ['-fopenmp -O3'], # -march=native'], + 'extra_link_args' : ['-lgomp']} + + + + def _get_params(self): + return np.hstack((self.variance, self.inv_lengthscale)) + + def _set_params(self, x): + assert x.size == (self.num_params) + self.variance = x[0] + self.inv_lengthscale = x[1:] + self.lengthscale = 1./self.inv_lengthscale + self.lengthscale2 = np.square(self.lengthscale) + # reset cached results + self._X, self._X2, self._params = np.empty(shape=(3, 1)) + self._Z, self._mu, self._S = np.empty(shape=(3, 1)) # cached versions of Z,mu,S + + def _get_param_names(self): + if self.num_params == 2: + return ['variance', 'inv_lengthscale'] + else: + return ['variance'] + ['inv_lengthscale_%i' % i for i in range(self.inv_lengthscale.size)] + + def K(self, X, X2, target): + self._K_computations(X, X2) + target += self.variance * self._K_dvar + + def Kdiag(self, X, target): + np.add(target, self.variance, target) + + def dK_dtheta(self, dL_dK, X, X2, target): + self._K_computations(X, X2) + target[0] += np.sum(self._K_dvar * dL_dK) + if self.ARD: + dvardLdK = self._K_dvar * dL_dK + var_len3 = self.variance / np.power(self.lengthscale, 3) + if X2 is None: + # save computation for the symmetrical case + dvardLdK = dvardLdK + dvardLdK.T + code = """ + int q,i,j; + double tmp; + for(q=0; q + #include + """ + weave.inline(code, support_code=support_code, libraries=['gomp'], + arg_names=['N','num_inducing','input_dim','mu','Zhat','mudist_sq','mudist','lengthscale2','_psi2_denom','psi2_Zdist_sq','psi2_exponent','half_log_psi2_denom','psi2','variance_sq'], + type_converters=weave.converters.blitz, **self.weave_options) + + return mudist, mudist_sq, psi2_exponent, psi2 From 175e8cc561eff280c4789aad5aa5096b03280e89 Mon Sep 17 00:00:00 2001 From: James Hensman Date: Mon, 15 Jul 2013 20:40:29 +0100 Subject: [PATCH 041/135] removed abomnibal matrix class --- GPy/examples/regression.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/GPy/examples/regression.py b/GPy/examples/regression.py index db22cb0b..cc92c543 100644 --- a/GPy/examples/regression.py +++ b/GPy/examples/regression.py @@ -67,8 +67,8 @@ def toy_ARD(optim_iters=1000, kernel_type='linear', N=300, D=4): X4 = np.log(np.sort(np.random.rand(N,1),0)) X = np.hstack((X1, X2, X3, X4)) - Y1 = np.asmatrix(2*X[:,0]+3).T - Y2 = np.asmatrix(4*(X[:,2]-1.5*X[:,0])).T + Y1 = np.asarray(2*X[:,0]+3).T + Y2 = np.asarray(4*(X[:,2]-1.5*X[:,0])).T Y = np.hstack((Y1, Y2)) Y = np.dot(Y, np.random.rand(2,D)); @@ -103,8 +103,8 @@ def toy_ARD_sparse(optim_iters=1000, kernel_type='linear', N=300, D=4): X4 = np.log(np.sort(np.random.rand(N,1),0)) X = np.hstack((X1, X2, X3, X4)) - Y1 = np.asmatrix(2*X[:,0]+3).T - Y2 = np.asmatrix(4*(X[:,2]-1.5*X[:,0])).T + Y1 = np.asarray(2*X[:,0]+3)[:,None] + Y2 = np.asarray(4*(X[:,2]-1.5*X[:,0]))[:,None] Y = np.hstack((Y1, Y2)) Y = np.dot(Y, np.random.rand(2,D)); From 6a5c1c03d3435c4625a84ec031e0f9643bc4be21 Mon Sep 17 00:00:00 2001 From: Andreas Date: Mon, 15 Jul 2013 20:57:17 +0100 Subject: [PATCH 042/135] minor --- GPy/examples/regression.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/GPy/examples/regression.py b/GPy/examples/regression.py index db22cb0b..cc92c543 100644 --- a/GPy/examples/regression.py +++ b/GPy/examples/regression.py @@ -67,8 +67,8 @@ def toy_ARD(optim_iters=1000, kernel_type='linear', N=300, D=4): X4 = np.log(np.sort(np.random.rand(N,1),0)) X = np.hstack((X1, X2, X3, X4)) - Y1 = np.asmatrix(2*X[:,0]+3).T - Y2 = np.asmatrix(4*(X[:,2]-1.5*X[:,0])).T + Y1 = np.asarray(2*X[:,0]+3).T + Y2 = np.asarray(4*(X[:,2]-1.5*X[:,0])).T Y = np.hstack((Y1, Y2)) Y = np.dot(Y, np.random.rand(2,D)); @@ -103,8 +103,8 @@ def toy_ARD_sparse(optim_iters=1000, kernel_type='linear', N=300, D=4): X4 = np.log(np.sort(np.random.rand(N,1),0)) X = np.hstack((X1, X2, X3, X4)) - Y1 = np.asmatrix(2*X[:,0]+3).T - Y2 = np.asmatrix(4*(X[:,2]-1.5*X[:,0])).T + Y1 = np.asarray(2*X[:,0]+3)[:,None] + Y2 = np.asarray(4*(X[:,2]-1.5*X[:,0]))[:,None] Y = np.hstack((Y1, Y2)) Y = np.dot(Y, np.random.rand(2,D)); From 1c9227fd14ba63ffd5b2a814bdebebac7af8b9dd Mon Sep 17 00:00:00 2001 From: Andreas Date: Tue, 16 Jul 2013 16:22:44 +0100 Subject: [PATCH 043/135] Rbf inv now working --- GPy/kern/parts/rbf_inv.py | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/GPy/kern/parts/rbf_inv.py b/GPy/kern/parts/rbf_inv.py index 35b6e1a9..52e93968 100644 --- a/GPy/kern/parts/rbf_inv.py +++ b/GPy/kern/parts/rbf_inv.py @@ -95,6 +95,7 @@ class RBFInv(Kernpart): if self.ARD: dvardLdK = self._K_dvar * dL_dK var_len3 = self.variance / np.power(self.lengthscale, 3) + len2 = self.lengthscale2 if X2 is None: # save computation for the symmetrical case dvardLdK = dvardLdK + dvardLdK.T @@ -108,11 +109,11 @@ class RBFInv(Kernpart): tmp += (X(i,q)-X(j,q))*(X(i,q)-X(j,q))*dvardLdK(i,j); } } - target(q+1) += var_len3(q)*tmp; + target(q+1) += var_len3(q)*tmp*(-len2(q)); } """ num_data, num_inducing, input_dim = X.shape[0], X.shape[0], self.input_dim - weave.inline(code, arg_names=['num_data','num_inducing','input_dim','X','X2','target','dvardLdK','var_len3'], type_converters=weave.converters.blitz, **self.weave_options) + weave.inline(code, arg_names=['num_data','num_inducing','input_dim','X','X2','target','dvardLdK','var_len3', 'len2'], type_converters=weave.converters.blitz, **self.weave_options) else: code = """ int q,i,j; @@ -124,15 +125,15 @@ class RBFInv(Kernpart): tmp += (X(i,q)-X2(j,q))*(X(i,q)-X2(j,q))*dvardLdK(i,j); } } - target(q+1) += var_len3(q)*tmp; + target(q+1) += var_len3(q)*tmp*(-len2(q)); } """ num_data, num_inducing, input_dim = X.shape[0], X2.shape[0], self.input_dim #[np.add(target[1+q:2+q],var_len3[q]*np.sum(dvardLdK*np.square(X[:,q][:,None]-X2[:,q][None,:])),target[1+q:2+q]) for q in range(self.input_dim)] - weave.inline(code, arg_names=['num_data','num_inducing','input_dim','X','X2','target','dvardLdK','var_len3'], type_converters=weave.converters.blitz, **self.weave_options) + weave.inline(code, arg_names=['num_data','num_inducing','input_dim','X','X2','target','dvardLdK','var_len3', 'len2'], type_converters=weave.converters.blitz, **self.weave_options) else: - target[1] += (self.variance / self.lengthscale) * np.sum(self._K_dvar * self._K_dist2 * dL_dK) - target[1:self.input_dim+1]*=(-self.lengthscale2) + target[1] += (self.variance / self.lengthscale) * np.sum(self._K_dvar * self._K_dist2 * dL_dK)*(-self.lengthscale2) + def dKdiag_dtheta(self, dL_dKdiag, X, target): # NB: derivative of diagonal elements wrt lengthscale is 0 @@ -172,10 +173,10 @@ class RBFInv(Kernpart): target[0] += np.sum(dL_dpsi1 * self._psi1 / self.variance) dpsi1_dlength = d_length * dL_dpsi1[:, :, None] if not self.ARD: - target[1] += dpsi1_dlength.sum() + target[1] += dpsi1_dlength.sum()*(-self.lengthscale2) else: - target[1:] += dpsi1_dlength.sum(0).sum(0) - target[1:self.input_dim+1] *=(-self.lengthscale2) + target[1:] += dpsi1_dlength.sum(0).sum(0)*(-self.lengthscale2) + #target[1:] = target[1:]*(-self.lengthscale2) def dpsi1_dZ(self, dL_dpsi1, Z, mu, S, target): self._psi_computations(Z, mu, S) @@ -202,10 +203,10 @@ class RBFInv(Kernpart): target[0] += np.sum(dL_dpsi2 * d_var) dpsi2_dlength = d_length * dL_dpsi2[:, :, :, None] if not self.ARD: - target[1] += dpsi2_dlength.sum() + target[1] += dpsi2_dlength.sum()*(-self.lengthscale2) else: - target[1:] += dpsi2_dlength.sum(0).sum(0).sum(0) - target[1:self.input_dim+1] *=(-self.lengthscale2) + target[1:] += dpsi2_dlength.sum(0).sum(0).sum(0)*(-self.lengthscale2) + #target[1:] = target[1:]*(-self.lengthscale2) def dpsi2_dZ(self, dL_dpsi2, Z, mu, S, target): self._psi_computations(Z, mu, S) From d46b07b18d76687c5aa0b46dfb43ef0fce1ce992 Mon Sep 17 00:00:00 2001 From: Nicolo Fusi Date: Tue, 16 Jul 2013 17:08:40 +0100 Subject: [PATCH 044/135] (much) faster comparison between arrays. Useful for kernel caching --- GPy/kern/parts/linear.py | 7 ++++--- GPy/kern/parts/rbf.py | 7 ++++--- GPy/util/misc.py | 43 +++++++++++++++++++++++++++++++++++++++- 3 files changed, 50 insertions(+), 7 deletions(-) diff --git a/GPy/kern/parts/linear.py b/GPy/kern/parts/linear.py index c1da3944..04bd78a4 100644 --- a/GPy/kern/parts/linear.py +++ b/GPy/kern/parts/linear.py @@ -5,6 +5,7 @@ from kernpart import Kernpart import numpy as np from ...util.linalg import tdot +from ...util.misc import fast_array_equal from scipy import weave class Linear(Kernpart): @@ -266,7 +267,7 @@ class Linear(Kernpart): #---------------------------------------# def _K_computations(self, X, X2): - if not (np.array_equal(X, self._Xcache) and np.array_equal(X2, self._X2cache)): + if not (fast_array_equal(X, self._Xcache) and fast_array_equal(X2, self._X2cache)): self._Xcache = X.copy() if X2 is None: self._dot_product = tdot(X) @@ -277,8 +278,8 @@ class Linear(Kernpart): def _psi_computations(self, Z, mu, S): # here are the "statistics" for psi1 and psi2 - Zv_changed = not (np.array_equal(Z, self._Z) and np.array_equal(self.variances, self._variances)) - muS_changed = not (np.array_equal(mu, self._mu) and np.array_equal(S, self._S)) + Zv_changed = not (fast_array_equal(Z, self._Z) and fast_array_equal(self.variances, self._variances)) + muS_changed = not (fast_array_equal(mu, self._mu) and fast_array_equal(S, self._S)) if Zv_changed: # Z has changed, compute Z specific stuff # self.ZZ = Z[:,None,:]*Z[None,:,:] # num_inducing,num_inducing,input_dim diff --git a/GPy/kern/parts/rbf.py b/GPy/kern/parts/rbf.py index fce1722b..d317e4b7 100644 --- a/GPy/kern/parts/rbf.py +++ b/GPy/kern/parts/rbf.py @@ -7,6 +7,7 @@ import numpy as np import hashlib from scipy import weave from ...util.linalg import tdot +from ...util.misc import fast_array_equal class RBF(Kernpart): """ @@ -222,7 +223,7 @@ class RBF(Kernpart): #---------------------------------------# def _K_computations(self, X, X2): - if not (np.array_equal(X, self._X) and np.array_equal(X2, self._X2) and np.array_equal(self._params , self._get_params())): + if not (fast_array_equal(X, self._X) and fast_array_equal(X2, self._X2) and fast_array_equal(self._params , self._get_params())): self._X = X.copy() self._params == self._get_params().copy() if X2 is None: @@ -239,14 +240,14 @@ class RBF(Kernpart): def _psi_computations(self, Z, mu, S): # here are the "statistics" for psi1 and psi2 - if not np.array_equal(Z, self._Z): + if not fast_array_equal(Z, self._Z): #Z has changed, compute Z specific stuff self._psi2_Zhat = 0.5*(Z[:,None,:] +Z[None,:,:]) # M,M,Q self._psi2_Zdist = 0.5*(Z[:,None,:]-Z[None,:,:]) # M,M,Q self._psi2_Zdist_sq = np.square(self._psi2_Zdist/self.lengthscale) # M,M,Q self._Z = Z - if not (np.array_equal(Z, self._Z) and np.array_equal(mu, self._mu) and np.array_equal(S, self._S)): + if not (fast_array_equal(Z, self._Z) and fast_array_equal(mu, self._mu) and fast_array_equal(S, self._S)): #something's changed. recompute EVERYTHING #psi1 diff --git a/GPy/util/misc.py b/GPy/util/misc.py index e0f70703..5b3a70da 100644 --- a/GPy/util/misc.py +++ b/GPy/util/misc.py @@ -1,8 +1,8 @@ # Copyright (c) 2012, GPy authors (see AUTHORS.txt). # Licensed under the BSD 3-clause license (see LICENSE.txt) - import numpy as np +from scipy import weave def opt_wrapper(m, **kwargs): """ @@ -58,6 +58,47 @@ def kmm_init(X, m = 10): inducing = np.array(inducing) return X[inducing] +def fast_array_equal(A, B): + code=""" + int i, j; + return_val = 1; + + #pragma omp parallel for private(i, j) + for(i=0;i + #include + """ + + weave_options = {'headers' : [''], + 'extra_compile_args': ['-fopenmp -O3'], + 'extra_link_args' : ['-lgomp']} + + + value = False + + if A is not None and B is not None and A.shape == B.shape: + if len(A.shape) == 2: + N, D = A.shape + value = weave.inline(code, support_code=support_code, libraries=['gomp'], + arg_names=['A', 'B', 'N', 'D'], + type_converters=weave.converters.blitz,**weave_options) + else: + value = np.array_equal(A,B) + + + return value + + if __name__ == '__main__': import pylab as plt X = np.linspace(1,10, 100)[:, None] From dedcf1df5aa0f7eef2016df2f360bbee836603a8 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Wed, 17 Jul 2013 14:12:06 +0100 Subject: [PATCH 045/135] plot_ARD greatly improved, plotting of ARD paramters for multiple ARD kernels now supported --- GPy/kern/kern.py | 50 ++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 44 insertions(+), 6 deletions(-) diff --git a/GPy/kern/kern.py b/GPy/kern/kern.py index 5cd90749..4786196e 100644 --- a/GPy/kern/kern.py +++ b/GPy/kern/kern.py @@ -66,12 +66,27 @@ class kern(Parameterized): Parameterized.setstate(self, state) - def plot_ARD(self, fignum=None, ax=None, title=None): - """If an ARD kernel is present, it bar-plots the ARD parameters""" + def plot_ARD(self, fignum=None, ax=None, title='', legend=False): + """If an ARD kernel is present, it bar-plots the ARD parameters, + :param fignum: figure number of the plot + :param ax: matplotlib axis to plot on + :param title: + title of the plot, + pass '' to not print a title + pass None for a generic title + """ if ax is None: fig = pb.figure(fignum) ax = fig.add_subplot(111) + from GPy.util import Tango + from matplotlib.textpath import TextPath + Tango.reset() + xticklabels = [] + bars = [] + x0 = 0 + xes = [] for p in self.parts: + c = Tango.nextMedium() if hasattr(p, 'ARD') and p.ARD: if title is None: ax.set_title('ARD parameters, %s kernel' % p.name) @@ -82,10 +97,32 @@ class kern(Parameterized): else: ard_params = 1. / p.lengthscale - x = np.arange(len(ard_params)) - ax.bar(x - 0.4, ard_params) - ax.set_xticks(x) - ax.set_xticklabels([r"${}$".format(i) for i in x]) + x = np.arange(x0, x0 + len(ard_params)) + bars.append(ax.bar(x, ard_params, align='center', color=c, edgecolor='k', linewidth=1.2, label=p.name)) + xticklabels.extend([r"$\mathrm{{{name}}}\ {x}$".format(name=p.name, x=i) for i in np.arange(len(ard_params))]) + x0 += len(ard_params) + x = np.arange(x0) + ax.set_xticks([]) + for bar in bars: + for patch, num in zip(bar.patches, np.arange(len(bar.patches))): + height = patch.get_height() + xi = patch.get_x() + patch.get_width() / 2. + va = 'top' + c = 'w' + t = TextPath((0, 0), "${xi}$".format(xi=xi), rotation=0, usetex=True, ha='center') + if patch.get_extents().height <= t.get_extents().height + 2: + va = 'bottom' + c = 'k' + ax.text(xi, height, "${xi}$".format(xi=int(num)), color=c, rotation=0, ha='center', va=va) + # for xi, t in zip(x, xticklabels): + # ax.text(xi, maxi / 2, t, rotation=90, ha='center', va='center') + # ax.set_xticklabels(xticklabels, rotation=17) + ax.set_xlim(-.5, x0 - .5) + if title is '': + ax.legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3, + ncol=len(bars), mode="expand", borderaxespad=0.) + else: + ax.legend() return ax def _transform_gradients(self, g): @@ -361,6 +398,7 @@ class kern(Parameterized): # compute the "cross" terms # TODO: better looping, input_slices + for i1, i2 in itertools.permutations(range(len(self.parts)), 2): p1, p2 = self.parts[i1], self.parts[i2] # ipsl1, ipsl2 = self.input_slices[i1], self.input_slices[i2] From 0870301144140b5112a0d7d75d6055436234ea62 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Wed, 17 Jul 2013 14:48:04 +0100 Subject: [PATCH 046/135] BGPLVM pca init now able to cope with all dimension issues --- GPy/models/gplvm.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/GPy/models/gplvm.py b/GPy/models/gplvm.py index 2e81b370..86c0ac28 100644 --- a/GPy/models/gplvm.py +++ b/GPy/models/gplvm.py @@ -36,10 +36,10 @@ class GPLVM(GP): self.ensure_default_constraints() def initialise_latent(self, init, input_dim, Y): + Xr = np.random.randn(Y.shape[0], input_dim) if init == 'PCA': - return PCA(Y, input_dim)[0] - else: - return np.random.randn(Y.shape[0], input_dim) + Xr[:, :Y.shape[1]] = PCA(Y, input_dim)[0] + return Xr def getstate(self): return GP.getstate(self) From c280cdac90e0c4518f2049f33f9d8f3432a49ee3 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Wed, 17 Jul 2013 14:50:02 +0100 Subject: [PATCH 047/135] added unittests for sparse gp with uncertain inputs --- GPy/testing/unit_tests.py | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/GPy/testing/unit_tests.py b/GPy/testing/unit_tests.py index 6e504a69..b3029d7f 100644 --- a/GPy/testing/unit_tests.py +++ b/GPy/testing/unit_tests.py @@ -23,7 +23,7 @@ class GradientTests(unittest.TestCase): self.X2D = np.random.uniform(-3., 3., (40, 2)) self.Y2D = np.sin(self.X2D[:, 0:1]) * np.sin(self.X2D[:, 1:2]) + np.random.randn(40, 1) * 0.05 - def check_model_with_white(self, kern, model_type='GPRegression', dimension=1): + def check_model_with_white(self, kern, model_type='GPRegression', dimension=1, uncertain_inputs=False): # Get the correct gradients if dimension == 1: X = self.X1D @@ -36,7 +36,10 @@ class GradientTests(unittest.TestCase): noise = GPy.kern.white(dimension) kern = kern + noise - m = model_fit(X, Y, kernel=kern) + if uncertain_inputs: + m = model_fit(X, Y, kernel=kern, X_variance=np.random.rand(X.shape[0], X.shape[1])) + else: + m = model_fit(X, Y, kernel=kern) m.randomize() # contrain all parameters to be positive self.assertTrue(m.checkgrad()) @@ -141,6 +144,26 @@ class GradientTests(unittest.TestCase): rbf = GPy.kern.rbf(2) self.check_model_with_white(rbf, model_type='SparseGPRegression', dimension=2) + def test_SparseGPRegression_rbf_linear_white_kern_1D(self): + ''' Testing the sparse GP regression with rbf and white kernel on 2d data ''' + rbflin = GPy.kern.rbf(1) + GPy.kern.linear(1) + self.check_model_with_white(rbflin, model_type='SparseGPRegression', dimension=1) + + def test_SparseGPRegression_rbf_linear_white_kern_2D(self): + ''' Testing the sparse GP regression with rbf and white kernel on 2d data ''' + rbflin = GPy.kern.rbf(2) + GPy.kern.linear(2) + self.check_model_with_white(rbflin, model_type='SparseGPRegression', dimension=2) + + def test_SparseGPRegression_rbf_linear_white_kern_2D_uncertain_inputs(self): + ''' Testing the sparse GP regression with rbf, linear and white kernel on 2d data with uncertain inputs''' + rbflin = GPy.kern.rbf(2) + GPy.kern.linear(2) + self.check_model_with_white(rbflin, model_type='SparseGPRegression', dimension=2, uncertain_inputs=1) + + def test_SparseGPRegression_rbf_linear_white_kern_1D_uncertain_inputs(self): + ''' Testing the sparse GP regression with rbf, linear and white kernel on 1d data with uncertain inputs''' + rbflin = GPy.kern.rbf(1) + GPy.kern.linear(1) + self.check_model_with_white(rbflin, model_type='SparseGPRegression', dimension=1, uncertain_inputs=1) + def test_GPLVM_rbf_bias_white_kern_2D(self): """ Testing GPLVM with rbf + bias and white kernel """ N, input_dim, D = 50, 1, 2 From a8ae457e6b4addc1a187787d25ae3646c0d0f710 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Wed, 17 Jul 2013 15:00:49 +0100 Subject: [PATCH 048/135] BGPLVM example testing with rbf_inv --- GPy/examples/dimensionality_reduction.py | 44 ++++++++++++------------ 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/GPy/examples/dimensionality_reduction.py b/GPy/examples/dimensionality_reduction.py index ac39fd66..ef6e37fb 100644 --- a/GPy/examples/dimensionality_reduction.py +++ b/GPy/examples/dimensionality_reduction.py @@ -7,26 +7,27 @@ from matplotlib import pyplot as plt, cm import GPy from GPy.core.transformations import logexp from GPy.models.bayesian_gplvm import BayesianGPLVM +from GPy.likelihoods.gaussian import Gaussian default_seed = np.random.seed(123344) def BGPLVM(seed=default_seed): N = 10 num_inducing = 3 - Q = 2 - D = 4 + Q = 5 + D = 10 # generate GPLVM-like data X = np.random.rand(N, Q) - k = GPy.kern.rbf(Q) + GPy.kern.white(Q, 0.00001) + k = GPy.kern.rbf(Q) + GPy.kern.white(Q, 0.01) K = k.K(X) Y = np.random.multivariate_normal(np.zeros(N), K, Q).T + lik = Gaussian(Y, normalize=True) - k = GPy.kern.rbf(Q, ARD=True) + GPy.kern.linear(Q, ARD=True) + GPy.kern.rbf(Q, ARD=True) + GPy.kern.white(Q) - # k = GPy.kern.rbf(Q) + GPy.kern.rbf(Q) + GPy.kern.white(Q) + k = GPy.kern.rbf_inv(Q) + GPy.kern.bias(Q) + GPy.kern.white(Q) # k = GPy.kern.rbf(Q) + GPy.kern.bias(Q) + GPy.kern.white(Q, 0.00001) # k = GPy.kern.rbf(Q, ARD = False) + GPy.kern.white(Q, 0.00001) - m = GPy.models.BayesianGPLVM(Y, Q, kernel=k, num_inducing=num_inducing) + m = GPy.models.BayesianGPLVM(lik, Q, kernel=k, num_inducing=num_inducing) # m.constrain_positive('(rbf|bias|noise|white|S)') # m.constrain_fixed('S', 1) @@ -70,16 +71,16 @@ def sparseGPLVM_oil(optimize=True, N=100, Q=6, num_inducing=15, max_iters=50): # create simple GP model kernel = GPy.kern.rbf(Q, ARD=True) + GPy.kern.bias(Q) - m = GPy.models.SparseGPLVM(Y, Q, kernel=kernel, num_inducing = num_inducing) + m = GPy.models.SparseGPLVM(Y, Q, kernel=kernel, num_inducing=num_inducing) m.data_labels = data['Y'].argmax(axis=1) # optimize if optimize: - m.optimize('scg', messages=1, max_iters = max_iters) + m.optimize('scg', messages=1, max_iters=max_iters) # plot print(m) - #m.plot_latent(labels=m.data_labels) + # m.plot_latent(labels=m.data_labels) return m def swiss_roll(optimize=True, N=1000, num_inducing=15, Q=4, sigma=.2, plot=False): @@ -136,12 +137,12 @@ def swiss_roll(optimize=True, N=1000, num_inducing=15, Q=4, sigma=.2, plot=False m.optimize('scg', messages=1) return m -def BGPLVM_oil(optimize=True, N=200, Q=10, num_inducing=15, max_iters=50, plot=False, **k): +def BGPLVM_oil(optimize=True, N=200, Q=10, num_inducing=15, max_iters=150, plot=False, **k): np.random.seed(0) data = GPy.util.datasets.oil() # create simple GP model - kernel = GPy.kern.rbf(Q, ARD=True) + GPy.kern.bias(Q, np.exp(-2)) + GPy.kern.white(Q, np.exp(-2)) + kernel = GPy.kern.rbf_inv(Q, ARD=True) + GPy.kern.bias(Q, np.exp(-2)) + GPy.kern.white(Q, np.exp(-2)) Y = data['X'][:N] Yn = Y - Y.mean(0) Yn /= Yn.std(0) @@ -150,14 +151,14 @@ def BGPLVM_oil(optimize=True, N=200, Q=10, num_inducing=15, max_iters=50, plot=F m.data_labels = data['Y'][:N].argmax(axis=1) # m.constrain('variance|leng', logexp_clipped()) - m['.*lengt'] = 1. # m.X.var(0).max() / m.X.var(0) + m['.*lengt'] = m.X.var(0).max() / m.X.var(0) m['noise'] = Yn.var() / 100. # optimize if optimize: m.constrain_fixed('noise') - m.optimize('scg', messages=1, max_iters=100, gtol=.05) + m.optimize('scg', messages=1, max_iters=200, gtol=.05) m.constrain_positive('noise') m.optimize('scg', messages=1, max_iters=max_iters, gtol=.05) @@ -208,7 +209,7 @@ def _simulate_sincos(D1, D2, D3, N, num_inducing, Q, plot_sim=False): Y1 += .3 * np.random.randn(*Y1.shape) Y2 += .2 * np.random.randn(*Y2.shape) - Y3 += .1 * np.random.randn(*Y3.shape) + Y3 += .25 * np.random.randn(*Y3.shape) Y1 -= Y1.mean(0) Y2 -= Y2.mean(0) @@ -263,16 +264,16 @@ def bgplvm_simulation_matlab_compare(): def bgplvm_simulation(optimize='scg', plot=True, - max_iters=2e4): + max_iters=2e4, + plot_sim=False): # from GPy.core.transformations import logexp_clipped - D1, D2, D3, N, num_inducing, Q = 15, 8, 8, 100, 3, 5 - slist, Slist, Ylist = _simulate_sincos(D1, D2, D3, N, num_inducing, Q, plot) + D1, D2, D3, N, num_inducing, Q = 15, 5, 8, 300, 23, 6 + slist, Slist, Ylist = _simulate_sincos(D1, D2, D3, N, num_inducing, Q, plot_sim) from GPy.models import mrd from GPy import kern reload(mrd); reload(kern) - Y = Ylist[0] k = kern.linear(Q, ARD=True) + kern.bias(Q, np.exp(-2)) + kern.white(Q, np.exp(-2)) # + kern.bias(Q) @@ -280,7 +281,6 @@ def bgplvm_simulation(optimize='scg', # m.constrain('variance|noise', logexp_clipped()) m['noise'] = Y.var() / 100. - m['linear_variance'] = .01 if optimize: print "Optimizing model:" @@ -346,7 +346,7 @@ def brendan_faces(): def stick_play(range=None, frame_rate=15): data = GPy.util.datasets.stick() # optimize - if range==None: + if range == None: Y = data['Y'].copy() else: Y = data['Y'][range[0]:range[1], :].copy() @@ -374,10 +374,10 @@ def stick_bgplvm(model=None): data = GPy.util.datasets.stick() Q = 6 kernel = GPy.kern.rbf(Q, ARD=True) + GPy.kern.bias(Q, np.exp(-2)) + GPy.kern.white(Q, np.exp(-2)) - m = BayesianGPLVM(data['Y'], Q, init="PCA", num_inducing=20,kernel=kernel) + m = BayesianGPLVM(data['Y'], Q, init="PCA", num_inducing=20, kernel=kernel) # optimize m.ensure_default_constraints() - m.optimize(messages=1, max_f_eval=3000,xtol=1e-300,ftol=1e-300) + m.optimize(messages=1, max_f_eval=3000, xtol=1e-300, ftol=1e-300) m._set_params(m._get_params()) plt.clf, (latent_axes, sense_axes) = plt.subplots(1, 2) plt.sca(latent_axes) From c44bda766c15fca87e623abef512053cb4a0701e Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Wed, 17 Jul 2013 15:01:00 +0100 Subject: [PATCH 049/135] minor pep8 stuff --- GPy/core/gp.py | 3 ++- GPy/core/sparse_gp.py | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/GPy/core/gp.py b/GPy/core/gp.py index 847cd99d..ce2b59de 100644 --- a/GPy/core/gp.py +++ b/GPy/core/gp.py @@ -96,7 +96,8 @@ class GP(GPBase): model for a new variable Y* = v_tilde/tau_tilde, with a covariance matrix K* = K + diag(1./tau_tilde) plus a normalization term. """ - return - 0.5 * self.num_data * self.output_dim * np.log(2.*np.pi) - 0.5 * self.output_dim * self.K_logdet + self._model_fit_term() + self.likelihood.Z + return (-0.5 * self.num_data * self.output_dim * np.log(2.*np.pi) - + 0.5 * self.output_dim * self.K_logdet + self._model_fit_term() + self.likelihood.Z) def _log_likelihood_gradients(self): diff --git a/GPy/core/sparse_gp.py b/GPy/core/sparse_gp.py index 93ba5d7d..a6478850 100644 --- a/GPy/core/sparse_gp.py +++ b/GPy/core/sparse_gp.py @@ -108,7 +108,7 @@ class SparseGP(GPBase): self.B = np.eye(self.num_inducing) + self.A self.LB = jitchol(self.B) - #VVT_factor is a matrix such that tdot(VVT_factor) = VVT...this is for efficiency! + # VVT_factor is a matrix such that tdot(VVT_factor) = VVT...this is for efficiency! self.psi1Vf = np.dot(self.psi1.T, self.likelihood.VVT_factor) # back substutue C into psi1Vf @@ -163,7 +163,7 @@ class SparseGP(GPBase): def log_likelihood(self): """ Compute the (lower bound on the) log marginal likelihood """ if self.likelihood.is_heteroscedastic: - A = -0.5 * self.num_data * self.output_dim * np.log(2.*np.pi) + 0.5 * np.sum(np.log(self.likelihood.precision)) - 0.5 * np.sum(self.likelihood.V*self.likelihood.Y) + A = -0.5 * self.num_data * self.output_dim * np.log(2.*np.pi) + 0.5 * np.sum(np.log(self.likelihood.precision)) - 0.5 * np.sum(self.likelihood.V * self.likelihood.Y) B = -0.5 * self.output_dim * (np.sum(self.likelihood.precision.flatten() * self.psi0) - np.trace(self.A)) else: A = -0.5 * self.num_data * self.output_dim * (np.log(2.*np.pi) - np.log(self.likelihood.precision)) - 0.5 * self.likelihood.precision * self.likelihood.trYYT @@ -246,7 +246,7 @@ class SparseGP(GPBase): Kmmi_LmiBLmi = backsub_both_sides(self.Lm, np.eye(self.num_inducing) - Bi) if self.Cpsi1V is None: - psi1V = np.dot(self.psi1.T,self.likelihood.V) + psi1V = np.dot(self.psi1.T, self.likelihood.V) tmp, _ = dtrtrs(self.Lm, np.asfortranarray(psi1V), lower=1, trans=0) tmp, _ = dpotrs(self.LB, tmp, lower=1) self.Cpsi1V, _ = dtrtrs(self.Lm, tmp, lower=1, trans=1) From 03dd1ba895844d512d56c97a9f5128f73d074c3b Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Wed, 17 Jul 2013 15:22:17 +0100 Subject: [PATCH 050/135] plot_ARD greatly improved, plotting of ARD paramters for multiple ARD kernels now supported --- GPy/kern/kern.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/GPy/kern/kern.py b/GPy/kern/kern.py index 4786196e..3f78e5e5 100644 --- a/GPy/kern/kern.py +++ b/GPy/kern/kern.py @@ -84,7 +84,6 @@ class kern(Parameterized): xticklabels = [] bars = [] x0 = 0 - xes = [] for p in self.parts: c = Tango.nextMedium() if hasattr(p, 'ARD') and p.ARD: @@ -102,7 +101,6 @@ class kern(Parameterized): xticklabels.extend([r"$\mathrm{{{name}}}\ {x}$".format(name=p.name, x=i) for i in np.arange(len(ard_params))]) x0 += len(ard_params) x = np.arange(x0) - ax.set_xticks([]) for bar in bars: for patch, num in zip(bar.patches, np.arange(len(bar.patches))): height = patch.get_height() @@ -117,6 +115,7 @@ class kern(Parameterized): # for xi, t in zip(x, xticklabels): # ax.text(xi, maxi / 2, t, rotation=90, ha='center', va='center') # ax.set_xticklabels(xticklabels, rotation=17) + ax.set_xticks([]) ax.set_xlim(-.5, x0 - .5) if title is '': ax.legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3, From c42cdba0e6bf84c9bb7ef8a509bc52de6417503a Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Wed, 17 Jul 2013 15:22:27 +0100 Subject: [PATCH 051/135] BGPLVM example testing with rbf_inv --- GPy/examples/dimensionality_reduction.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/GPy/examples/dimensionality_reduction.py b/GPy/examples/dimensionality_reduction.py index ef6e37fb..5e0c77cb 100644 --- a/GPy/examples/dimensionality_reduction.py +++ b/GPy/examples/dimensionality_reduction.py @@ -18,16 +18,18 @@ def BGPLVM(seed=default_seed): D = 10 # generate GPLVM-like data X = np.random.rand(N, Q) - k = GPy.kern.rbf(Q) + GPy.kern.white(Q, 0.01) + lengthscales = np.random.rand(Q) + k = GPy.kern.rbf(Q, .5, lengthscales, ARD=True) + GPy.kern.white(Q, 0.01) K = k.K(X) Y = np.random.multivariate_normal(np.zeros(N), K, Q).T lik = Gaussian(Y, normalize=True) - k = GPy.kern.rbf_inv(Q) + GPy.kern.bias(Q) + GPy.kern.white(Q) + k = GPy.kern.rbf_inv(Q, ARD=True) + GPy.kern.bias(Q) + GPy.kern.white(Q) # k = GPy.kern.rbf(Q) + GPy.kern.bias(Q) + GPy.kern.white(Q, 0.00001) # k = GPy.kern.rbf(Q, ARD = False) + GPy.kern.white(Q, 0.00001) m = GPy.models.BayesianGPLVM(lik, Q, kernel=k, num_inducing=num_inducing) + m.lengthscales = lengthscales # m.constrain_positive('(rbf|bias|noise|white|S)') # m.constrain_fixed('S', 1) @@ -38,8 +40,8 @@ def BGPLVM(seed=default_seed): # m.optimize(messages = 1) # m.plot() # pb.title('After optimisation') - m.randomize() - m.checkgrad(verbose=1) + # m.randomize() + # m.checkgrad(verbose=1) return m @@ -143,6 +145,7 @@ def BGPLVM_oil(optimize=True, N=200, Q=10, num_inducing=15, max_iters=150, plot= # create simple GP model kernel = GPy.kern.rbf_inv(Q, ARD=True) + GPy.kern.bias(Q, np.exp(-2)) + GPy.kern.white(Q, np.exp(-2)) + kernel += GPy.kern.rbf_inv(Q, ARD=True) + GPy.kern.bias(Q, np.exp(-2)) + GPy.kern.white(Q, np.exp(-2)) Y = data['X'][:N] Yn = Y - Y.mean(0) Yn /= Yn.std(0) @@ -151,7 +154,7 @@ def BGPLVM_oil(optimize=True, N=200, Q=10, num_inducing=15, max_iters=150, plot= m.data_labels = data['Y'][:N].argmax(axis=1) # m.constrain('variance|leng', logexp_clipped()) - m['.*lengt'] = m.X.var(0).max() / m.X.var(0) + # m['.*lengt'] = m.X.var(0).max() / m.X.var(0) m['noise'] = Yn.var() / 100. @@ -267,7 +270,7 @@ def bgplvm_simulation(optimize='scg', max_iters=2e4, plot_sim=False): # from GPy.core.transformations import logexp_clipped - D1, D2, D3, N, num_inducing, Q = 15, 5, 8, 300, 23, 6 + D1, D2, D3, N, num_inducing, Q = 15, 5, 8, 300, 30, 6 slist, Slist, Ylist = _simulate_sincos(D1, D2, D3, N, num_inducing, Q, plot_sim) from GPy.models import mrd From 09ee9e5fab8c7819def1a6ebabdefaac7a69ed03 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Wed, 17 Jul 2013 15:43:46 +0100 Subject: [PATCH 052/135] bayesian gplvm plots inducing inputs automatically --- GPy/models/bayesian_gplvm.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GPy/models/bayesian_gplvm.py b/GPy/models/bayesian_gplvm.py index 68b0a133..ac6c7c69 100644 --- a/GPy/models/bayesian_gplvm.py +++ b/GPy/models/bayesian_gplvm.py @@ -115,8 +115,8 @@ class BayesianGPLVM(SparseGP, GPLVM): self.dbound_dZtheta = SparseGP._log_likelihood_gradients(self) return np.hstack((self.dbound_dmuS.flatten(), self.dbound_dZtheta)) - def plot_latent(self, *args, **kwargs): - return plot_latent.plot_latent(self, *args, **kwargs) + def plot_latent(self, plot_inducing=True, *args, **kwargs): + return plot_latent.plot_latent(self, plot_inducing=plot_inducing, *args, **kwargs) def do_test_latents(self, Y): """ From 27b3ad62dfc01f1d22d3e21ce1a538c0ae3c4a8e Mon Sep 17 00:00:00 2001 From: Andreas Date: Wed, 17 Jul 2013 17:05:11 +0100 Subject: [PATCH 053/135] Bgplvm_stick demo with rbf_inv --- GPy/examples/dimensionality_reduction.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/GPy/examples/dimensionality_reduction.py b/GPy/examples/dimensionality_reduction.py index ac39fd66..a3b618d1 100644 --- a/GPy/examples/dimensionality_reduction.py +++ b/GPy/examples/dimensionality_reduction.py @@ -150,7 +150,7 @@ def BGPLVM_oil(optimize=True, N=200, Q=10, num_inducing=15, max_iters=50, plot=F m.data_labels = data['Y'][:N].argmax(axis=1) # m.constrain('variance|leng', logexp_clipped()) - m['.*lengt'] = 1. # m.X.var(0).max() / m.X.var(0) + m['.*lengt'] = 1. # 5./((np.max(m.X,0)-np.min(m.X,0))**2) # m.X.var(0).max() / m.X.var(0) m['noise'] = Yn.var() / 100. @@ -327,6 +327,7 @@ def brendan_faces(): # Y = data['Y'] Yn = Y - Y.mean() Yn /= Yn.std() + m.plot_latent() m = GPy.models.GPLVM(Yn, Q) # m = GPy.models.BayesianGPLVM(Yn, Q, num_inducing=100) @@ -373,11 +374,12 @@ def stick(): def stick_bgplvm(model=None): data = GPy.util.datasets.stick() Q = 6 - kernel = GPy.kern.rbf(Q, ARD=True) + GPy.kern.bias(Q, np.exp(-2)) + GPy.kern.white(Q, np.exp(-2)) - m = BayesianGPLVM(data['Y'], Q, init="PCA", num_inducing=20,kernel=kernel) + kernel = GPy.kern.rbf_inv(Q, ARD=True) + GPy.kern.bias(Q, np.exp(-2)) + GPy.kern.white(Q, np.exp(-2)) + m = BayesianGPLVM(data['Y'], Q, init="PCA", num_inducing=35,kernel=kernel) # optimize m.ensure_default_constraints() - m.optimize(messages=1, max_f_eval=3000,xtol=1e-300,ftol=1e-300) + m.constrain_bounded('.*rbf_inv',1e-5, 100) + m.optimize(messages=1, max_iters=3000,xtol=1e-300,ftol=1e-300) m._set_params(m._get_params()) plt.clf, (latent_axes, sense_axes) = plt.subplots(1, 2) plt.sca(latent_axes) From 8da0785b26f72f797c6fa9963449ea27fc7d508c Mon Sep 17 00:00:00 2001 From: Nicolo Fusi Date: Wed, 17 Jul 2013 17:13:28 +0100 Subject: [PATCH 054/135] fixed logic for fast_array_equal --- GPy/util/misc.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/GPy/util/misc.py b/GPy/util/misc.py index 5b3a70da..f931ae6a 100644 --- a/GPy/util/misc.py +++ b/GPy/util/misc.py @@ -86,7 +86,11 @@ def fast_array_equal(A, B): value = False - if A is not None and B is not None and A.shape == B.shape: + if (A == None) and (B == None): + return True + elif ((A == None) and (B != None)) or ((A != None) and (B == None)): + return False + elif A.shape == B.shape: if len(A.shape) == 2: N, D = A.shape value = weave.inline(code, support_code=support_code, libraries=['gomp'], @@ -95,7 +99,6 @@ def fast_array_equal(A, B): else: value = np.array_equal(A,B) - return value From 0909ec30bc884cf70d591a6eb5930d71ea22dc61 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Wed, 17 Jul 2013 17:43:45 +0100 Subject: [PATCH 055/135] BGPLVM example correction --- GPy/examples/dimensionality_reduction.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/GPy/examples/dimensionality_reduction.py b/GPy/examples/dimensionality_reduction.py index 5e0c77cb..08fdfa8d 100644 --- a/GPy/examples/dimensionality_reduction.py +++ b/GPy/examples/dimensionality_reduction.py @@ -24,7 +24,7 @@ def BGPLVM(seed=default_seed): Y = np.random.multivariate_normal(np.zeros(N), K, Q).T lik = Gaussian(Y, normalize=True) - k = GPy.kern.rbf_inv(Q, ARD=True) + GPy.kern.bias(Q) + GPy.kern.white(Q) + k = GPy.kern.rbf(Q, ARD=True) + GPy.kern.bias(Q) + GPy.kern.white(Q) # k = GPy.kern.rbf(Q) + GPy.kern.bias(Q) + GPy.kern.white(Q, 0.00001) # k = GPy.kern.rbf(Q, ARD = False) + GPy.kern.white(Q, 0.00001) @@ -145,7 +145,6 @@ def BGPLVM_oil(optimize=True, N=200, Q=10, num_inducing=15, max_iters=150, plot= # create simple GP model kernel = GPy.kern.rbf_inv(Q, ARD=True) + GPy.kern.bias(Q, np.exp(-2)) + GPy.kern.white(Q, np.exp(-2)) - kernel += GPy.kern.rbf_inv(Q, ARD=True) + GPy.kern.bias(Q, np.exp(-2)) + GPy.kern.white(Q, np.exp(-2)) Y = data['X'][:N] Yn = Y - Y.mean(0) Yn /= Yn.std(0) From a4170abceb1138ce26318d11f855996dbbff62c4 Mon Sep 17 00:00:00 2001 From: Nicolo Fusi Date: Wed, 17 Jul 2013 17:44:04 +0100 Subject: [PATCH 056/135] fast_array_equals now handles 3d matrices --- GPy/util/misc.py | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/GPy/util/misc.py b/GPy/util/misc.py index f931ae6a..0914adb8 100644 --- a/GPy/util/misc.py +++ b/GPy/util/misc.py @@ -59,7 +59,7 @@ def kmm_init(X, m = 10): return X[inducing] def fast_array_equal(A, B): - code=""" + code2=""" int i, j; return_val = 1; @@ -74,6 +74,23 @@ def fast_array_equal(A, B): } """ + code3=""" + int i, j, z; + return_val = 1; + + #pragma omp parallel for private(i, j, z) + for(i=0;i #include @@ -93,9 +110,14 @@ def fast_array_equal(A, B): elif A.shape == B.shape: if len(A.shape) == 2: N, D = A.shape - value = weave.inline(code, support_code=support_code, libraries=['gomp'], + value = weave.inline(code2, support_code=support_code, libraries=['gomp'], arg_names=['A', 'B', 'N', 'D'], type_converters=weave.converters.blitz,**weave_options) + elif len(A.shape) == 3: + N, D, Q = A.shape + value = weave.inline(code3, support_code=support_code, libraries=['gomp'], + arg_names=['A', 'B', 'N', 'D', 'Q'], + type_converters=weave.converters.blitz,**weave_options) else: value = np.array_equal(A,B) From 06d540f056c6b1489c904a80683d96055ebc8629 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Wed, 17 Jul 2013 17:49:50 +0100 Subject: [PATCH 057/135] plot_ARD greatly improved, crossterm plotting enabled --- GPy/kern/kern.py | 48 ++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 42 insertions(+), 6 deletions(-) diff --git a/GPy/kern/kern.py b/GPy/kern/kern.py index 5cd90749..491f9ed7 100644 --- a/GPy/kern/kern.py +++ b/GPy/kern/kern.py @@ -66,12 +66,26 @@ class kern(Parameterized): Parameterized.setstate(self, state) - def plot_ARD(self, fignum=None, ax=None, title=None): - """If an ARD kernel is present, it bar-plots the ARD parameters""" + def plot_ARD(self, fignum=None, ax=None, title='', legend=False): + """If an ARD kernel is present, it bar-plots the ARD parameters, + :param fignum: figure number of the plot + :param ax: matplotlib axis to plot on + :param title: + title of the plot, + pass '' to not print a title + pass None for a generic title + """ if ax is None: fig = pb.figure(fignum) ax = fig.add_subplot(111) + from GPy.util import Tango + from matplotlib.textpath import TextPath + Tango.reset() + xticklabels = [] + bars = [] + x0 = 0 for p in self.parts: + c = Tango.nextMedium() if hasattr(p, 'ARD') and p.ARD: if title is None: ax.set_title('ARD parameters, %s kernel' % p.name) @@ -82,10 +96,32 @@ class kern(Parameterized): else: ard_params = 1. / p.lengthscale - x = np.arange(len(ard_params)) - ax.bar(x - 0.4, ard_params) - ax.set_xticks(x) - ax.set_xticklabels([r"${}$".format(i) for i in x]) + x = np.arange(x0, x0 + len(ard_params)) + bars.append(ax.bar(x, ard_params, align='center', color=c, edgecolor='k', linewidth=1.2, label=p.name)) + xticklabels.extend([r"$\mathrm{{{name}}}\ {x}$".format(name=p.name, x=i) for i in np.arange(len(ard_params))]) + x0 += len(ard_params) + x = np.arange(x0) + for bar in bars: + for patch, num in zip(bar.patches, np.arange(len(bar.patches))): + height = patch.get_height() + xi = patch.get_x() + patch.get_width() / 2. + va = 'top' + c = 'w' + t = TextPath((0, 0), "${xi}$".format(xi=xi), rotation=0, usetex=True, ha='center') + if patch.get_extents().height <= t.get_extents().height + 2: + va = 'bottom' + c = 'k' + ax.text(xi, height, "${xi}$".format(xi=int(num)), color=c, rotation=0, ha='center', va=va) + # for xi, t in zip(x, xticklabels): + # ax.text(xi, maxi / 2, t, rotation=90, ha='center', va='center') + # ax.set_xticklabels(xticklabels, rotation=17) + ax.set_xticks([]) + ax.set_xlim(-.5, x0 - .5) + if title is '': + ax.legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3, + ncol=len(bars), mode="expand", borderaxespad=0.) + else: + ax.legend() return ax def _transform_gradients(self, g): From a65c5a94193ade67be99393e79d6a71556a73767 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Wed, 17 Jul 2013 17:50:11 +0100 Subject: [PATCH 058/135] plot_ARD greatly improved, crossterm plotting enabled --- GPy/kern/kern.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GPy/kern/kern.py b/GPy/kern/kern.py index 491f9ed7..a09a94f3 100644 --- a/GPy/kern/kern.py +++ b/GPy/kern/kern.py @@ -119,7 +119,7 @@ class kern(Parameterized): ax.set_xlim(-.5, x0 - .5) if title is '': ax.legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3, - ncol=len(bars), mode="expand", borderaxespad=0.) + ncol=max(2, len(bars)), mode="expand", borderaxespad=0.) else: ax.legend() return ax From 0a4deeefcdcf1997df18dd14dbb7135e505c34eb Mon Sep 17 00:00:00 2001 From: Andreas Date: Wed, 17 Jul 2013 18:18:00 +0100 Subject: [PATCH 059/135] stick_bgplvm to original version with rbf --- GPy/examples/dimensionality_reduction.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/GPy/examples/dimensionality_reduction.py b/GPy/examples/dimensionality_reduction.py index de406773..24e4f03c 100644 --- a/GPy/examples/dimensionality_reduction.py +++ b/GPy/examples/dimensionality_reduction.py @@ -378,11 +378,10 @@ def stick(): def stick_bgplvm(model=None): data = GPy.util.datasets.stick() Q = 6 - kernel = GPy.kern.rbf_inv(Q, ARD=True) + GPy.kern.bias(Q, np.exp(-2)) + GPy.kern.white(Q, np.exp(-2)) - m = BayesianGPLVM(data['Y'], Q, init="PCA", num_inducing=35,kernel=kernel) + kernel = GPy.kern.rbf(Q, ARD=True) + GPy.kern.bias(Q, np.exp(-2)) + GPy.kern.white(Q, np.exp(-2)) + m = BayesianGPLVM(data['Y'], Q, init="PCA", num_inducing=20,kernel=kernel) # optimize m.ensure_default_constraints() - m.constrain_bounded('.*rbf_inv',1e-5, 100) m.optimize(messages=1, max_iters=3000,xtol=1e-300,ftol=1e-300) m._set_params(m._get_params()) plt.clf, (latent_axes, sense_axes) = plt.subplots(1, 2) From f56b66cd7ae2ad4090b80cbb9a18d2ca553893e0 Mon Sep 17 00:00:00 2001 From: Andreas Date: Wed, 17 Jul 2013 21:42:30 +0100 Subject: [PATCH 060/135] input sensitivity for rbf_inv --- GPy/core/model.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/GPy/core/model.py b/GPy/core/model.py index 5de114c5..452138cc 100644 --- a/GPy/core/model.py +++ b/GPy/core/model.py @@ -477,13 +477,15 @@ class Model(Parameterized): if not hasattr(self, 'kern'): raise ValueError, "this Model has no kernel" - k = [p for p in self.kern.parts if p.name in ['rbf', 'linear']] + k = [p for p in self.kern.parts if p.name in ['rbf', 'linear','rbf_inv']] if (not len(k) == 1) or (not k[0].ARD): raise ValueError, "cannot determine sensitivity for this kernel" k = k[0] if k.name == 'rbf': return k.lengthscale + elif k.name == 'rbf_inv': + return 1. / k.inv_lengthscale elif k.name == 'linear': return 1. / k.variances From 14b8fd0c7d27f1211dead0a05a4477203a9f79de Mon Sep 17 00:00:00 2001 From: Andreas Date: Wed, 17 Jul 2013 22:07:14 +0100 Subject: [PATCH 061/135] Rewritten most parts wrt inv_lengthscale (still missing dK_dtheta and dPsi2_dtheta can be written better) --- GPy/kern/parts/rbf_inv.py | 106 +++++++++++++++++--------------------- 1 file changed, 47 insertions(+), 59 deletions(-) diff --git a/GPy/kern/parts/rbf_inv.py b/GPy/kern/parts/rbf_inv.py index 52e93968..f933d395 100644 --- a/GPy/kern/parts/rbf_inv.py +++ b/GPy/kern/parts/rbf_inv.py @@ -2,15 +2,16 @@ # Licensed under the BSD 3-clause license (see LICENSE.txt) -from kernpart import Kernpart +from rbf import RBF import numpy as np import hashlib from scipy import weave from ...util.linalg import tdot -class RBFInv(Kernpart): +class RBFInv(RBF): """ - Radial Basis Function kernel, aka squared-exponential, exponentiated quadratic or Gaussian kernel: + Radial Basis Function kernel, aka squared-exponential, exponentiated quadratic or Gaussian kernel. It only + differs from RBF in that here the parametrization is wrt the inverse lengthscale: .. math:: @@ -33,7 +34,7 @@ class RBFInv(Kernpart): def __init__(self, input_dim, variance=1., inv_lengthscale=None, ARD=False): self.input_dim = input_dim - self.name = 'rbf' + self.name = 'rbf_inv' self.ARD = ARD if not ARD: self.num_params = 2 @@ -70,6 +71,8 @@ class RBFInv(Kernpart): assert x.size == (self.num_params) self.variance = x[0] self.inv_lengthscale = x[1:] + self.inv_lengthscale2 = np.square(self.inv_lengthscale) + # TODO: We can rewrite everything with inv_lengthscale and never need to do the below self.lengthscale = 1./self.inv_lengthscale self.lengthscale2 = np.square(self.lengthscale) # reset cached results @@ -80,15 +83,9 @@ class RBFInv(Kernpart): if self.num_params == 2: return ['variance', 'inv_lengthscale'] else: - return ['variance'] + ['inv_lengthscale_%i' % i for i in range(self.inv_lengthscale.size)] - - def K(self, X, X2, target): - self._K_computations(X, X2) - target += self.variance * self._K_dvar - - def Kdiag(self, X, target): - np.add(target, self.variance, target) + return ['variance'] + ['inv_lengthscale%i' % i for i in range(self.inv_lengthscale.size)] + # TODO: Rewrite computations so that lengthscale is not needed (but only inv. lengthscale) def dK_dtheta(self, dL_dK, X, X2, target): self._K_computations(X, X2) target[0] += np.sum(self._K_dvar * dL_dK) @@ -134,15 +131,10 @@ class RBFInv(Kernpart): else: target[1] += (self.variance / self.lengthscale) * np.sum(self._K_dvar * self._K_dist2 * dL_dK)*(-self.lengthscale2) - - def dKdiag_dtheta(self, dL_dKdiag, X, target): - # NB: derivative of diagonal elements wrt lengthscale is 0 - target[0] += np.sum(dL_dKdiag) - def dK_dX(self, dL_dK, X, X2, target): self._K_computations(X, X2) _K_dist = X[:, None, :] - X2[None, :, :] # don't cache this in _K_computations because it is high memory. If this function is being called, chances are we're not in the high memory arena. - dK_dX = (-self.variance / self.lengthscale2) * np.transpose(self._K_dvar[:, :, np.newaxis] * _K_dist, (1, 0, 2)) + dK_dX = (-self.variance * self.inv_lengthscale2) * np.transpose(self._K_dvar[:, :, np.newaxis] * _K_dist, (1, 0, 2)) target += np.sum(dK_dX * dL_dK.T[:, :, None], 0) def dKdiag_dX(self, dL_dKdiag, X, target): @@ -153,72 +145,68 @@ class RBFInv(Kernpart): # PSI statistics # #---------------------------------------# - def psi0(self, Z, mu, S, target): - target += self.variance - - def dpsi0_dtheta(self, dL_dpsi0, Z, mu, S, target): - target[0] += np.sum(dL_dpsi0) - - def dpsi0_dmuS(self, dL_dpsi0, Z, mu, S, target_mu, target_S): - pass - - def psi1(self, Z, mu, S, target): - self._psi_computations(Z, mu, S) - target += self._psi1 + # def dpsi1_dtheta(self, dL_dpsi1, Z, mu, S, target): + # self._psi_computations(Z, mu, S) + # denom_deriv = S[:, None, :] / (self.lengthscale ** 3 + self.lengthscale * S[:, None, :]) + # d_length = self._psi1[:, :, None] * (self.lengthscale * np.square(self._psi1_dist / (self.lengthscale2 + S[:, None, :])) + denom_deriv) + # target[0] += np.sum(dL_dpsi1 * self._psi1 / self.variance) + # dpsi1_dlength = d_length * dL_dpsi1[:, :, None] + # if not self.ARD: + # target[1] += dpsi1_dlength.sum()*(-self.lengthscale2) + # else: + # target[1:] += dpsi1_dlength.sum(0).sum(0)*(-self.lengthscale2) + # #target[1:] = target[1:]*(-self.lengthscale2) def dpsi1_dtheta(self, dL_dpsi1, Z, mu, S, target): self._psi_computations(Z, mu, S) - denom_deriv = S[:, None, :] / (self.lengthscale ** 3 + self.lengthscale * S[:, None, :]) - d_length = self._psi1[:, :, None] * (self.lengthscale * np.square(self._psi1_dist / (self.lengthscale2 + S[:, None, :])) + denom_deriv) + ##d_length = self._psi1[:, :, None] * (-0.5 * ((np.square((self._psi1_dist)/(self.inv_lengthscale * S[:,None,:] + 1))) + ((S[:, None, :])/(self.inv_lengthscale * S[:, None, :] + 1)))) + tmp = 1 + S[:,None,:]*self.inv_lengthscale2 + #inv_len3 = np.power(self.inv_lengthscale,3) + d_length = -(self._psi1[:, :, None] * ((np.square(self._psi1_dist) * self.inv_lengthscale)/(tmp**2) + (S[:,None,:]*self.inv_lengthscale)/(tmp))) target[0] += np.sum(dL_dpsi1 * self._psi1 / self.variance) dpsi1_dlength = d_length * dL_dpsi1[:, :, None] if not self.ARD: - target[1] += dpsi1_dlength.sum()*(-self.lengthscale2) + target[1] += dpsi1_dlength.sum()#*(-self.lengthscale2) else: - target[1:] += dpsi1_dlength.sum(0).sum(0)*(-self.lengthscale2) + target[1:] += dpsi1_dlength.sum(0).sum(0)#*(-self.lengthscale2) #target[1:] = target[1:]*(-self.lengthscale2) def dpsi1_dZ(self, dL_dpsi1, Z, mu, S, target): self._psi_computations(Z, mu, S) - denominator = (self.lengthscale2 * (self._psi1_denom)) - dpsi1_dZ = -self._psi1[:, :, None] * ((self._psi1_dist / denominator)) + dpsi1_dZ = -self._psi1[:, :, None] * ((self.inv_lengthscale2*self._psi1_dist)/self._psi1_denom) target += np.sum(dL_dpsi1[:, :, None] * dpsi1_dZ, 0) def dpsi1_dmuS(self, dL_dpsi1, Z, mu, S, target_mu, target_S): self._psi_computations(Z, mu, S) - tmp = self._psi1[:, :, None] / self.lengthscale2 / self._psi1_denom + tmp = (self._psi1[:, :, None] * self.inv_lengthscale2) / self._psi1_denom target_mu += np.sum(dL_dpsi1[:, :, None] * tmp * self._psi1_dist, 1) target_S += np.sum(dL_dpsi1[:, :, None] * 0.5 * tmp * (self._psi1_dist_sq - 1), 1) - def psi2(self, Z, mu, S, target): - self._psi_computations(Z, mu, S) - target += self._psi2 - def dpsi2_dtheta(self, dL_dpsi2, Z, mu, S, target): """Shape N,num_inducing,num_inducing,Ntheta""" self._psi_computations(Z, mu, S) d_var = 2.*self._psi2 / self.variance - d_length = 2.*self._psi2[:, :, :, None] * (self._psi2_Zdist_sq * self._psi2_denom + self._psi2_mudist_sq + S[:, None, None, :] / self.lengthscale2) / (self.lengthscale * self._psi2_denom) - + #d_length = 2.*self._psi2[:, :, :, None] * (self._psi2_Zdist_sq * self._psi2_denom + self._psi2_mudist_sq + S[:, None, None, :] / self.lengthscale2) / (self.lengthscale * self._psi2_denom) + d_length = -2.*self._psi2[:, :, :, None] * (self._psi2_Zdist_sq * self._psi2_denom + self._psi2_mudist_sq + S[:, None, None, :] * self.inv_lengthscale2) / (self.inv_lengthscale * self._psi2_denom) target[0] += np.sum(dL_dpsi2 * d_var) dpsi2_dlength = d_length * dL_dpsi2[:, :, :, None] if not self.ARD: - target[1] += dpsi2_dlength.sum()*(-self.lengthscale2) + target[1] += dpsi2_dlength.sum()#*(-self.lengthscale2) else: - target[1:] += dpsi2_dlength.sum(0).sum(0).sum(0)*(-self.lengthscale2) + target[1:] += dpsi2_dlength.sum(0).sum(0).sum(0)#*(-self.lengthscale2) #target[1:] = target[1:]*(-self.lengthscale2) def dpsi2_dZ(self, dL_dpsi2, Z, mu, S, target): self._psi_computations(Z, mu, S) - term1 = self._psi2_Zdist / self.lengthscale2 # num_inducing, num_inducing, input_dim - term2 = self._psi2_mudist / self._psi2_denom / self.lengthscale2 # N, num_inducing, num_inducing, input_dim + term1 = self._psi2_Zdist * self.inv_lengthscale2 # num_inducing, num_inducing, input_dim + term2 = (self._psi2_mudist * self.inv_lengthscale2) / self._psi2_denom # N, num_inducing, num_inducing, input_dim dZ = self._psi2[:, :, :, None] * (term1[None] + term2) target += (dL_dpsi2[:, :, :, None] * dZ).sum(0).sum(0) def dpsi2_dmuS(self, dL_dpsi2, Z, mu, S, target_mu, target_S): """Think N,num_inducing,num_inducing,input_dim """ self._psi_computations(Z, mu, S) - tmp = self._psi2[:, :, :, None] / self.lengthscale2 / self._psi2_denom + tmp = (self.inv_lengthscale2 * self._psi2[:, :, :, None]) / self._psi2_denom target_mu += -2.*(dL_dpsi2[:, :, :, None] * tmp * self._psi2_mudist).sum(1).sum(1) target_S += (dL_dpsi2[:, :, :, None] * tmp * (2.*self._psi2_mudist_sq - 1)).sum(1).sum(1) @@ -232,13 +220,13 @@ class RBFInv(Kernpart): self._params == self._get_params().copy() if X2 is None: self._X2 = None - X = X / self.lengthscale + X = X * self.inv_lengthscale Xsquare = np.sum(np.square(X), 1) self._K_dist2 = -2.*tdot(X) + (Xsquare[:, None] + Xsquare[None, :]) else: self._X2 = X2.copy() - X = X / self.lengthscale - X2 = X2 / self.lengthscale + X = X * self.inv_lengthscale + X2 = X2 * self.inv_lengthscale self._K_dist2 = -2.*np.dot(X, X2.T) + (np.sum(np.square(X), 1)[:, None] + np.sum(np.square(X2), 1)[None, :]) self._K_dvar = np.exp(-0.5 * self._K_dist2) @@ -248,21 +236,21 @@ class RBFInv(Kernpart): #Z has changed, compute Z specific stuff self._psi2_Zhat = 0.5*(Z[:,None,:] +Z[None,:,:]) # M,M,Q self._psi2_Zdist = 0.5*(Z[:,None,:]-Z[None,:,:]) # M,M,Q - self._psi2_Zdist_sq = np.square(self._psi2_Zdist/self.lengthscale) # M,M,Q + self._psi2_Zdist_sq = np.square(self._psi2_Zdist*self.inv_lengthscale) # M,M,Q self._Z = Z if not (np.array_equal(Z, self._Z) and np.array_equal(mu, self._mu) and np.array_equal(S, self._S)): #something's changed. recompute EVERYTHING #psi1 - self._psi1_denom = S[:,None,:]/self.lengthscale2 + 1. + self._psi1_denom = S[:,None,:]*self.inv_lengthscale2 + 1. self._psi1_dist = Z[None,:,:]-mu[:,None,:] - self._psi1_dist_sq = np.square(self._psi1_dist)/self.lengthscale2/self._psi1_denom + self._psi1_dist_sq = (np.square(self._psi1_dist)*self.inv_lengthscale2)/self._psi1_denom self._psi1_exponent = -0.5*np.sum(self._psi1_dist_sq+np.log(self._psi1_denom),-1) self._psi1 = self.variance*np.exp(self._psi1_exponent) #psi2 - self._psi2_denom = 2.*S[:,None,None,:]/self.lengthscale2+1. # N,M,M,Q + self._psi2_denom = 2.*S[:,None,None,:]*self.inv_lengthscale2+1. # N,M,M,Q self._psi2_mudist, self._psi2_mudist_sq, self._psi2_exponent, _ = self.weave_psi2(mu,self._psi2_Zhat) #self._psi2_mudist = mu[:,None,None,:]-self._psi2_Zhat #N,M,M,Q #self._psi2_mudist_sq = np.square(self._psi2_mudist)/(self.lengthscale2*self._psi2_denom) @@ -286,9 +274,9 @@ class RBFInv(Kernpart): half_log_psi2_denom = 0.5 * np.log(self._psi2_denom).squeeze().reshape(N, self.input_dim) variance_sq = float(np.square(self.variance)) if self.ARD: - lengthscale2 = self.lengthscale2 + inv_lengthscale2 = self.inv_lengthscale2 else: - lengthscale2 = np.ones(input_dim) * self.lengthscale2 + inv_lengthscale2 = np.ones(input_dim) * self.inv_lengthscale2 code = """ double tmp; @@ -303,7 +291,7 @@ class RBFInv(Kernpart): mudist(n,mm,m,q) = tmp; //now mudist_sq - tmp = tmp*tmp/lengthscale2(q)/_psi2_denom(n,q); + tmp = tmp*tmp*inv_lengthscale2(q)/_psi2_denom(n,q); mudist_sq(n,m,mm,q) = tmp; mudist_sq(n,mm,m,q) = tmp; @@ -329,7 +317,7 @@ class RBFInv(Kernpart): #include """ weave.inline(code, support_code=support_code, libraries=['gomp'], - arg_names=['N','num_inducing','input_dim','mu','Zhat','mudist_sq','mudist','lengthscale2','_psi2_denom','psi2_Zdist_sq','psi2_exponent','half_log_psi2_denom','psi2','variance_sq'], + arg_names=['N','num_inducing','input_dim','mu','Zhat','mudist_sq','mudist','inv_lengthscale2','_psi2_denom','psi2_Zdist_sq','psi2_exponent','half_log_psi2_denom','psi2','variance_sq'], type_converters=weave.converters.blitz, **self.weave_options) return mudist, mudist_sq, psi2_exponent, psi2 From dfb96a84056b8ae9e1aa2e9495afa63739186ef6 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Thu, 18 Jul 2013 14:20:32 +0100 Subject: [PATCH 062/135] ard plotting enhanced --- GPy/kern/kern.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/GPy/kern/kern.py b/GPy/kern/kern.py index a09a94f3..8db28e0a 100644 --- a/GPy/kern/kern.py +++ b/GPy/kern/kern.py @@ -7,6 +7,7 @@ from ..core.parameterized import Parameterized from parts.kernpart import Kernpart import itertools from parts.prod import Prod as prod +from matplotlib.transforms import offset_copy class kern(Parameterized): def __init__(self, input_dim, parts=[], input_slices=None): @@ -101,6 +102,8 @@ class kern(Parameterized): xticklabels.extend([r"$\mathrm{{{name}}}\ {x}$".format(name=p.name, x=i) for i in np.arange(len(ard_params))]) x0 += len(ard_params) x = np.arange(x0) + transOffset = offset_copy(ax.transData, fig=fig, + x=0., y= -2., units='points') for bar in bars: for patch, num in zip(bar.patches, np.arange(len(bar.patches))): height = patch.get_height() @@ -111,15 +114,19 @@ class kern(Parameterized): if patch.get_extents().height <= t.get_extents().height + 2: va = 'bottom' c = 'k' - ax.text(xi, height, "${xi}$".format(xi=int(num)), color=c, rotation=0, ha='center', va=va) + ax.text(xi, height, "${xi}$".format(xi=int(num)), color=c, rotation=0, ha='center', va=va, transform=transOffset) # for xi, t in zip(x, xticklabels): # ax.text(xi, maxi / 2, t, rotation=90, ha='center', va='center') # ax.set_xticklabels(xticklabels, rotation=17) ax.set_xticks([]) ax.set_xlim(-.5, x0 - .5) if title is '': - ax.legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3, - ncol=max(2, len(bars)), mode="expand", borderaxespad=0.) + mode = 'expand' + if len(bars) > 1: + mode = 'expand' + ax.legend(bbox_to_anchor=(0., 1.02, 1., 1.02), loc=3, + ncol=len(bars), mode=mode, borderaxespad=0.) + fig.tight_layout(rect=(0, 0, 1, .9)) else: ax.legend() return ax From a27557e1969ac466b6a8cb2f900150abe5fcb52b Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Thu, 18 Jul 2013 14:21:36 +0100 Subject: [PATCH 063/135] dimensionality reduction demo --- GPy/examples/dimensionality_reduction.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GPy/examples/dimensionality_reduction.py b/GPy/examples/dimensionality_reduction.py index bd316eba..34e9a803 100644 --- a/GPy/examples/dimensionality_reduction.py +++ b/GPy/examples/dimensionality_reduction.py @@ -24,7 +24,7 @@ def BGPLVM(seed=default_seed): Y = np.random.multivariate_normal(np.zeros(N), K, Q).T lik = Gaussian(Y, normalize=True) - k = GPy.kern.rbf_inv(Q, ARD=True) + GPy.kern.bias(Q) + GPy.kern.white(Q) + k = GPy.kern.rbf(Q, ARD=True) + GPy.kern.bias(Q) + GPy.kern.white(Q) # k = GPy.kern.rbf(Q) + GPy.kern.bias(Q) + GPy.kern.white(Q, 0.00001) # k = GPy.kern.rbf(Q, ARD = False) + GPy.kern.white(Q, 0.00001) From dcec9d2a257eea0889804dff4618db29e3f76c3f Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Thu, 18 Jul 2013 15:15:09 +0100 Subject: [PATCH 064/135] reverted stupid merge error --- GPy/core/gp.py | 3 ++- GPy/core/sparse_gp.py | 6 +++--- GPy/core/svigp.py | 6 +++--- GPy/examples/dimensionality_reduction.py | 2 +- GPy/examples/regression.py | 4 ++-- GPy/models/bayesian_gplvm.py | 4 ++-- GPy/models/gplvm.py | 6 +++--- GPy/testing/unit_tests.py | 27 ++++++++++++++++++++++-- 8 files changed, 41 insertions(+), 17 deletions(-) diff --git a/GPy/core/gp.py b/GPy/core/gp.py index 847cd99d..ce2b59de 100644 --- a/GPy/core/gp.py +++ b/GPy/core/gp.py @@ -96,7 +96,8 @@ class GP(GPBase): model for a new variable Y* = v_tilde/tau_tilde, with a covariance matrix K* = K + diag(1./tau_tilde) plus a normalization term. """ - return - 0.5 * self.num_data * self.output_dim * np.log(2.*np.pi) - 0.5 * self.output_dim * self.K_logdet + self._model_fit_term() + self.likelihood.Z + return (-0.5 * self.num_data * self.output_dim * np.log(2.*np.pi) - + 0.5 * self.output_dim * self.K_logdet + self._model_fit_term() + self.likelihood.Z) def _log_likelihood_gradients(self): diff --git a/GPy/core/sparse_gp.py b/GPy/core/sparse_gp.py index 93ba5d7d..a6478850 100644 --- a/GPy/core/sparse_gp.py +++ b/GPy/core/sparse_gp.py @@ -108,7 +108,7 @@ class SparseGP(GPBase): self.B = np.eye(self.num_inducing) + self.A self.LB = jitchol(self.B) - #VVT_factor is a matrix such that tdot(VVT_factor) = VVT...this is for efficiency! + # VVT_factor is a matrix such that tdot(VVT_factor) = VVT...this is for efficiency! self.psi1Vf = np.dot(self.psi1.T, self.likelihood.VVT_factor) # back substutue C into psi1Vf @@ -163,7 +163,7 @@ class SparseGP(GPBase): def log_likelihood(self): """ Compute the (lower bound on the) log marginal likelihood """ if self.likelihood.is_heteroscedastic: - A = -0.5 * self.num_data * self.output_dim * np.log(2.*np.pi) + 0.5 * np.sum(np.log(self.likelihood.precision)) - 0.5 * np.sum(self.likelihood.V*self.likelihood.Y) + A = -0.5 * self.num_data * self.output_dim * np.log(2.*np.pi) + 0.5 * np.sum(np.log(self.likelihood.precision)) - 0.5 * np.sum(self.likelihood.V * self.likelihood.Y) B = -0.5 * self.output_dim * (np.sum(self.likelihood.precision.flatten() * self.psi0) - np.trace(self.A)) else: A = -0.5 * self.num_data * self.output_dim * (np.log(2.*np.pi) - np.log(self.likelihood.precision)) - 0.5 * self.likelihood.precision * self.likelihood.trYYT @@ -246,7 +246,7 @@ class SparseGP(GPBase): Kmmi_LmiBLmi = backsub_both_sides(self.Lm, np.eye(self.num_inducing) - Bi) if self.Cpsi1V is None: - psi1V = np.dot(self.psi1.T,self.likelihood.V) + psi1V = np.dot(self.psi1.T, self.likelihood.V) tmp, _ = dtrtrs(self.Lm, np.asfortranarray(psi1V), lower=1, trans=0) tmp, _ = dpotrs(self.LB, tmp, lower=1) self.Cpsi1V, _ = dtrtrs(self.Lm, tmp, lower=1, trans=1) diff --git a/GPy/core/svigp.py b/GPy/core/svigp.py index 97f74045..5d6bcd8b 100644 --- a/GPy/core/svigp.py +++ b/GPy/core/svigp.py @@ -4,7 +4,7 @@ import numpy as np import pylab as pb from .. import kern -from ..util.linalg import linalg, pdinv, mdot, tdot, dpotrs, dtrtrs, jitchol, backsub_both_sides +from ..util.linalg import pdinv, mdot, tdot, dpotrs, dtrtrs, jitchol, backsub_both_sides from ..likelihoods import EP from gp_base import GPBase from model import Model @@ -269,6 +269,7 @@ class SVIGP(GPBase): def optimize(self, iterations, print_interval=10, callback=lambda:None, callback_interval=5): param_step = 0. + #Iterate! for i in range(iterations): @@ -287,7 +288,6 @@ class SVIGP(GPBase): #compute the steps in all parameters vb_step = self.vb_steplength*natgrads[0] if (self.epochs>=1):#only move the parameters after the first epoch - # print "it {} ep {} par {}".format(self.iterations, self.epochs, param_step) param_step = self.momentum*param_step + self.param_steplength*grads else: param_step = 0. @@ -295,8 +295,8 @@ class SVIGP(GPBase): self.set_vb_param(self.get_vb_param() + vb_step) #Note: don't recompute everything here, wait until the next iteration when we have a new batch self._set_params(self._untransform_params(self._get_params_transformed() + param_step), computations=False) + #print messages if desired - if i and (not i%print_interval): print i, np.mean(self._ll_trace[-print_interval:]) #, self.log_likelihood() print np.round(np.mean(self._grad_trace[-print_interval:],0),3) diff --git a/GPy/examples/dimensionality_reduction.py b/GPy/examples/dimensionality_reduction.py index 34e9a803..bd316eba 100644 --- a/GPy/examples/dimensionality_reduction.py +++ b/GPy/examples/dimensionality_reduction.py @@ -24,7 +24,7 @@ def BGPLVM(seed=default_seed): Y = np.random.multivariate_normal(np.zeros(N), K, Q).T lik = Gaussian(Y, normalize=True) - k = GPy.kern.rbf(Q, ARD=True) + GPy.kern.bias(Q) + GPy.kern.white(Q) + k = GPy.kern.rbf_inv(Q, ARD=True) + GPy.kern.bias(Q) + GPy.kern.white(Q) # k = GPy.kern.rbf(Q) + GPy.kern.bias(Q) + GPy.kern.white(Q, 0.00001) # k = GPy.kern.rbf(Q, ARD = False) + GPy.kern.white(Q, 0.00001) diff --git a/GPy/examples/regression.py b/GPy/examples/regression.py index 66b0bbc6..cc92c543 100644 --- a/GPy/examples/regression.py +++ b/GPy/examples/regression.py @@ -67,8 +67,8 @@ def toy_ARD(optim_iters=1000, kernel_type='linear', N=300, D=4): X4 = np.log(np.sort(np.random.rand(N,1),0)) X = np.hstack((X1, X2, X3, X4)) - Y1 = np.asmatrix(2*X[:,0]+3).T - Y2 = np.asmatrix(4*(X[:,2]-1.5*X[:,0])).T + Y1 = np.asarray(2*X[:,0]+3).T + Y2 = np.asarray(4*(X[:,2]-1.5*X[:,0])).T Y = np.hstack((Y1, Y2)) Y = np.dot(Y, np.random.rand(2,D)); diff --git a/GPy/models/bayesian_gplvm.py b/GPy/models/bayesian_gplvm.py index 68b0a133..ac6c7c69 100644 --- a/GPy/models/bayesian_gplvm.py +++ b/GPy/models/bayesian_gplvm.py @@ -115,8 +115,8 @@ class BayesianGPLVM(SparseGP, GPLVM): self.dbound_dZtheta = SparseGP._log_likelihood_gradients(self) return np.hstack((self.dbound_dmuS.flatten(), self.dbound_dZtheta)) - def plot_latent(self, *args, **kwargs): - return plot_latent.plot_latent(self, *args, **kwargs) + def plot_latent(self, plot_inducing=True, *args, **kwargs): + return plot_latent.plot_latent(self, plot_inducing=plot_inducing, *args, **kwargs) def do_test_latents(self, Y): """ diff --git a/GPy/models/gplvm.py b/GPy/models/gplvm.py index 2e81b370..86c0ac28 100644 --- a/GPy/models/gplvm.py +++ b/GPy/models/gplvm.py @@ -36,10 +36,10 @@ class GPLVM(GP): self.ensure_default_constraints() def initialise_latent(self, init, input_dim, Y): + Xr = np.random.randn(Y.shape[0], input_dim) if init == 'PCA': - return PCA(Y, input_dim)[0] - else: - return np.random.randn(Y.shape[0], input_dim) + Xr[:, :Y.shape[1]] = PCA(Y, input_dim)[0] + return Xr def getstate(self): return GP.getstate(self) diff --git a/GPy/testing/unit_tests.py b/GPy/testing/unit_tests.py index 6e504a69..b3029d7f 100644 --- a/GPy/testing/unit_tests.py +++ b/GPy/testing/unit_tests.py @@ -23,7 +23,7 @@ class GradientTests(unittest.TestCase): self.X2D = np.random.uniform(-3., 3., (40, 2)) self.Y2D = np.sin(self.X2D[:, 0:1]) * np.sin(self.X2D[:, 1:2]) + np.random.randn(40, 1) * 0.05 - def check_model_with_white(self, kern, model_type='GPRegression', dimension=1): + def check_model_with_white(self, kern, model_type='GPRegression', dimension=1, uncertain_inputs=False): # Get the correct gradients if dimension == 1: X = self.X1D @@ -36,7 +36,10 @@ class GradientTests(unittest.TestCase): noise = GPy.kern.white(dimension) kern = kern + noise - m = model_fit(X, Y, kernel=kern) + if uncertain_inputs: + m = model_fit(X, Y, kernel=kern, X_variance=np.random.rand(X.shape[0], X.shape[1])) + else: + m = model_fit(X, Y, kernel=kern) m.randomize() # contrain all parameters to be positive self.assertTrue(m.checkgrad()) @@ -141,6 +144,26 @@ class GradientTests(unittest.TestCase): rbf = GPy.kern.rbf(2) self.check_model_with_white(rbf, model_type='SparseGPRegression', dimension=2) + def test_SparseGPRegression_rbf_linear_white_kern_1D(self): + ''' Testing the sparse GP regression with rbf and white kernel on 2d data ''' + rbflin = GPy.kern.rbf(1) + GPy.kern.linear(1) + self.check_model_with_white(rbflin, model_type='SparseGPRegression', dimension=1) + + def test_SparseGPRegression_rbf_linear_white_kern_2D(self): + ''' Testing the sparse GP regression with rbf and white kernel on 2d data ''' + rbflin = GPy.kern.rbf(2) + GPy.kern.linear(2) + self.check_model_with_white(rbflin, model_type='SparseGPRegression', dimension=2) + + def test_SparseGPRegression_rbf_linear_white_kern_2D_uncertain_inputs(self): + ''' Testing the sparse GP regression with rbf, linear and white kernel on 2d data with uncertain inputs''' + rbflin = GPy.kern.rbf(2) + GPy.kern.linear(2) + self.check_model_with_white(rbflin, model_type='SparseGPRegression', dimension=2, uncertain_inputs=1) + + def test_SparseGPRegression_rbf_linear_white_kern_1D_uncertain_inputs(self): + ''' Testing the sparse GP regression with rbf, linear and white kernel on 1d data with uncertain inputs''' + rbflin = GPy.kern.rbf(1) + GPy.kern.linear(1) + self.check_model_with_white(rbflin, model_type='SparseGPRegression', dimension=1, uncertain_inputs=1) + def test_GPLVM_rbf_bias_white_kern_2D(self): """ Testing GPLVM with rbf + bias and white kernel """ N, input_dim, D = 50, 1, 2 From 8131a065cb75b551a7b6ec84b61b932fc18c998f Mon Sep 17 00:00:00 2001 From: James Hensman Date: Thu, 18 Jul 2013 15:36:04 +0100 Subject: [PATCH 065/135] small changes to rbf and rbf_inv --- GPy/core/gp.py | 4 ++-- GPy/kern/parts/rbf.py | 3 +-- GPy/kern/parts/rbf_inv.py | 7 +++---- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/GPy/core/gp.py b/GPy/core/gp.py index 847cd99d..e6c3a045 100644 --- a/GPy/core/gp.py +++ b/GPy/core/gp.py @@ -127,7 +127,7 @@ class GP(GPBase): debug_this # @UndefinedVariable return mu, var - def predict(self, Xnew, which_parts='all', full_cov=False): + def predict(self, Xnew, which_parts='all', full_cov=False, likelihood_args=dict()): """ Predict the function(s) at the new point(s) Xnew. Arguments @@ -152,6 +152,6 @@ class GP(GPBase): mu, var = self._raw_predict(Xnew, full_cov=full_cov, which_parts=which_parts) # now push through likelihood - mean, var, _025pm, _975pm = self.likelihood.predictive_values(mu, var, full_cov) + mean, var, _025pm, _975pm = self.likelihood.predictive_values(mu, var, full_cov, **likelihood_args) return mean, var, _025pm, _975pm diff --git a/GPy/kern/parts/rbf.py b/GPy/kern/parts/rbf.py index d317e4b7..9ce37f93 100644 --- a/GPy/kern/parts/rbf.py +++ b/GPy/kern/parts/rbf.py @@ -166,9 +166,8 @@ class RBF(Kernpart): def dpsi1_dtheta(self, dL_dpsi1, Z, mu, S, target): self._psi_computations(Z, mu, S) - denom_deriv = S[:, None, :] / (self.lengthscale ** 3 + self.lengthscale * S[:, None, :]) - d_length = self._psi1[:, :, None] * (self.lengthscale * np.square(self._psi1_dist / (self.lengthscale2 + S[:, None, :])) + denom_deriv) target[0] += np.sum(dL_dpsi1 * self._psi1 / self.variance) + d_length = self._psi1[:,:,None] * ((self._psi1_dist_sq - 1.)/(self.lengthscale*self._psi1_denom) +1./self.lengthscale) dpsi1_dlength = d_length * dL_dpsi1[:, :, None] if not self.ARD: target[1] += dpsi1_dlength.sum() diff --git a/GPy/kern/parts/rbf_inv.py b/GPy/kern/parts/rbf_inv.py index f933d395..af0d3b80 100644 --- a/GPy/kern/parts/rbf_inv.py +++ b/GPy/kern/parts/rbf_inv.py @@ -159,12 +159,11 @@ class RBFInv(RBF): def dpsi1_dtheta(self, dL_dpsi1, Z, mu, S, target): self._psi_computations(Z, mu, S) - ##d_length = self._psi1[:, :, None] * (-0.5 * ((np.square((self._psi1_dist)/(self.inv_lengthscale * S[:,None,:] + 1))) + ((S[:, None, :])/(self.inv_lengthscale * S[:, None, :] + 1)))) tmp = 1 + S[:,None,:]*self.inv_lengthscale2 - #inv_len3 = np.power(self.inv_lengthscale,3) - d_length = -(self._psi1[:, :, None] * ((np.square(self._psi1_dist) * self.inv_lengthscale)/(tmp**2) + (S[:,None,:]*self.inv_lengthscale)/(tmp))) + d_inv_length_old = -self._psi1[:,:,None] * ((self._psi1_dist_sq - 1.)/(self.lengthscale*self._psi1_denom) + self.inv_lengthscale)/self.inv_lengthscale2 + d_inv_length = -self._psi1[:,:,None] * ((self._psi1_dist_sq - 1.)/self._psi1_denom + self.lengthscale) target[0] += np.sum(dL_dpsi1 * self._psi1 / self.variance) - dpsi1_dlength = d_length * dL_dpsi1[:, :, None] + dpsi1_dlength = d_inv_length * dL_dpsi1[:, :, None] if not self.ARD: target[1] += dpsi1_dlength.sum()#*(-self.lengthscale2) else: From 9b161b7440e09dd8ff7b8f38854d1c221c418e39 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Thu, 18 Jul 2013 15:39:58 +0100 Subject: [PATCH 066/135] caching bugfix for psi2 computations --- GPy/kern/parts/rbf.py | 64 +++++++++++++-------------- GPy/kern/parts/rbf_inv.py | 91 +++++++++++++++++++-------------------- 2 files changed, 76 insertions(+), 79 deletions(-) diff --git a/GPy/kern/parts/rbf.py b/GPy/kern/parts/rbf.py index d317e4b7..1ce5db1a 100644 --- a/GPy/kern/parts/rbf.py +++ b/GPy/kern/parts/rbf.py @@ -4,7 +4,6 @@ from kernpart import Kernpart import numpy as np -import hashlib from scipy import weave from ...util.linalg import tdot from ...util.misc import fast_array_equal @@ -112,7 +111,7 @@ class RBF(Kernpart): } """ num_data, num_inducing, input_dim = X.shape[0], X.shape[0], self.input_dim - weave.inline(code, arg_names=['num_data','num_inducing','input_dim','X','X2','target','dvardLdK','var_len3'], type_converters=weave.converters.blitz, **self.weave_options) + weave.inline(code, arg_names=['num_data', 'num_inducing', 'input_dim', 'X', 'X2', 'target', 'dvardLdK', 'var_len3'], type_converters=weave.converters.blitz, **self.weave_options) else: code = """ int q,i,j; @@ -128,8 +127,8 @@ class RBF(Kernpart): } """ num_data, num_inducing, input_dim = X.shape[0], X2.shape[0], self.input_dim - #[np.add(target[1+q:2+q],var_len3[q]*np.sum(dvardLdK*np.square(X[:,q][:,None]-X2[:,q][None,:])),target[1+q:2+q]) for q in range(self.input_dim)] - weave.inline(code, arg_names=['num_data','num_inducing','input_dim','X','X2','target','dvardLdK','var_len3'], type_converters=weave.converters.blitz, **self.weave_options) + # [np.add(target[1+q:2+q],var_len3[q]*np.sum(dvardLdK*np.square(X[:,q][:,None]-X2[:,q][None,:])),target[1+q:2+q]) for q in range(self.input_dim)] + weave.inline(code, arg_names=['num_data', 'num_inducing', 'input_dim', 'X', 'X2', 'target', 'dvardLdK', 'var_len3'], type_converters=weave.converters.blitz, **self.weave_options) else: target[1] += (self.variance / self.lengthscale) * np.sum(self._K_dvar * self._K_dist2 * dL_dK) @@ -225,7 +224,7 @@ class RBF(Kernpart): def _K_computations(self, X, X2): if not (fast_array_equal(X, self._X) and fast_array_equal(X2, self._X2) and fast_array_equal(self._params , self._get_params())): self._X = X.copy() - self._params == self._get_params().copy() + self._params = self._get_params().copy() if X2 is None: self._X2 = None X = X / self.lengthscale @@ -241,41 +240,40 @@ class RBF(Kernpart): def _psi_computations(self, Z, mu, S): # here are the "statistics" for psi1 and psi2 if not fast_array_equal(Z, self._Z): - #Z has changed, compute Z specific stuff - self._psi2_Zhat = 0.5*(Z[:,None,:] +Z[None,:,:]) # M,M,Q - self._psi2_Zdist = 0.5*(Z[:,None,:]-Z[None,:,:]) # M,M,Q - self._psi2_Zdist_sq = np.square(self._psi2_Zdist/self.lengthscale) # M,M,Q - self._Z = Z + # Z has changed, compute Z specific stuff + self._psi2_Zhat = 0.5 * (Z[:, None, :] + Z[None, :, :]) # M,M,Q + self._psi2_Zdist = 0.5 * (Z[:, None, :] - Z[None, :, :]) # M,M,Q + self._psi2_Zdist_sq = np.square(self._psi2_Zdist / self.lengthscale) # M,M,Q if not (fast_array_equal(Z, self._Z) and fast_array_equal(mu, self._mu) and fast_array_equal(S, self._S)): - #something's changed. recompute EVERYTHING + # something's changed. recompute EVERYTHING - #psi1 - self._psi1_denom = S[:,None,:]/self.lengthscale2 + 1. - self._psi1_dist = Z[None,:,:]-mu[:,None,:] - self._psi1_dist_sq = np.square(self._psi1_dist)/self.lengthscale2/self._psi1_denom - self._psi1_exponent = -0.5*np.sum(self._psi1_dist_sq+np.log(self._psi1_denom),-1) - self._psi1 = self.variance*np.exp(self._psi1_exponent) + # psi1 + self._psi1_denom = S[:, None, :] / self.lengthscale2 + 1. + self._psi1_dist = Z[None, :, :] - mu[:, None, :] + self._psi1_dist_sq = np.square(self._psi1_dist) / self.lengthscale2 / self._psi1_denom + self._psi1_exponent = -0.5 * np.sum(self._psi1_dist_sq + np.log(self._psi1_denom), -1) + self._psi1 = self.variance * np.exp(self._psi1_exponent) - #psi2 - self._psi2_denom = 2.*S[:,None,None,:]/self.lengthscale2+1. # N,M,M,Q - self._psi2_mudist, self._psi2_mudist_sq, self._psi2_exponent, _ = self.weave_psi2(mu,self._psi2_Zhat) - #self._psi2_mudist = mu[:,None,None,:]-self._psi2_Zhat #N,M,M,Q - #self._psi2_mudist_sq = np.square(self._psi2_mudist)/(self.lengthscale2*self._psi2_denom) - #self._psi2_exponent = np.sum(-self._psi2_Zdist_sq -self._psi2_mudist_sq -0.5*np.log(self._psi2_denom),-1) #N,M,M,Q - self._psi2 = np.square(self.variance)*np.exp(self._psi2_exponent) # N,M,M,Q + # psi2 + self._psi2_denom = 2.*S[:, None, None, :] / self.lengthscale2 + 1. # N,M,M,Q + self._psi2_mudist, self._psi2_mudist_sq, self._psi2_exponent, _ = self.weave_psi2(mu, self._psi2_Zhat) + # self._psi2_mudist = mu[:,None,None,:]-self._psi2_Zhat #N,M,M,Q + # self._psi2_mudist_sq = np.square(self._psi2_mudist)/(self.lengthscale2*self._psi2_denom) + # self._psi2_exponent = np.sum(-self._psi2_Zdist_sq -self._psi2_mudist_sq -0.5*np.log(self._psi2_denom),-1) #N,M,M,Q + self._psi2 = np.square(self.variance) * np.exp(self._psi2_exponent) # N,M,M,Q - #store matrices for caching - self._Z, self._mu, self._S = Z, mu,S + # store matrices for caching + self._Z, self._mu, self._S = Z, mu, S - def weave_psi2(self,mu,Zhat): - N,input_dim = mu.shape + def weave_psi2(self, mu, Zhat): + N, input_dim = mu.shape num_inducing = Zhat.shape[0] - mudist = np.empty((N,num_inducing,num_inducing,input_dim)) - mudist_sq = np.empty((N,num_inducing,num_inducing,input_dim)) - psi2_exponent = np.zeros((N,num_inducing,num_inducing)) - psi2 = np.empty((N,num_inducing,num_inducing)) + mudist = np.empty((N, num_inducing, num_inducing, input_dim)) + mudist_sq = np.empty((N, num_inducing, num_inducing, input_dim)) + psi2_exponent = np.zeros((N, num_inducing, num_inducing)) + psi2 = np.empty((N, num_inducing, num_inducing)) psi2_Zdist_sq = self._psi2_Zdist_sq _psi2_denom = self._psi2_denom.squeeze().reshape(N, self.input_dim) @@ -325,7 +323,7 @@ class RBF(Kernpart): #include """ weave.inline(code, support_code=support_code, libraries=['gomp'], - arg_names=['N','num_inducing','input_dim','mu','Zhat','mudist_sq','mudist','lengthscale2','_psi2_denom','psi2_Zdist_sq','psi2_exponent','half_log_psi2_denom','psi2','variance_sq'], + arg_names=['N', 'num_inducing', 'input_dim', 'mu', 'Zhat', 'mudist_sq', 'mudist', 'lengthscale2', '_psi2_denom', 'psi2_Zdist_sq', 'psi2_exponent', 'half_log_psi2_denom', 'psi2', 'variance_sq'], type_converters=weave.converters.blitz, **self.weave_options) return mudist, mudist_sq, psi2_exponent, psi2 diff --git a/GPy/kern/parts/rbf_inv.py b/GPy/kern/parts/rbf_inv.py index f933d395..05605056 100644 --- a/GPy/kern/parts/rbf_inv.py +++ b/GPy/kern/parts/rbf_inv.py @@ -73,7 +73,7 @@ class RBFInv(RBF): self.inv_lengthscale = x[1:] self.inv_lengthscale2 = np.square(self.inv_lengthscale) # TODO: We can rewrite everything with inv_lengthscale and never need to do the below - self.lengthscale = 1./self.inv_lengthscale + self.lengthscale = 1. / self.inv_lengthscale self.lengthscale2 = np.square(self.lengthscale) # reset cached results self._X, self._X2, self._params = np.empty(shape=(3, 1)) @@ -110,7 +110,7 @@ class RBFInv(RBF): } """ num_data, num_inducing, input_dim = X.shape[0], X.shape[0], self.input_dim - weave.inline(code, arg_names=['num_data','num_inducing','input_dim','X','X2','target','dvardLdK','var_len3', 'len2'], type_converters=weave.converters.blitz, **self.weave_options) + weave.inline(code, arg_names=['num_data', 'num_inducing', 'input_dim', 'X', 'X2', 'target', 'dvardLdK', 'var_len3', 'len2'], type_converters=weave.converters.blitz, **self.weave_options) else: code = """ int q,i,j; @@ -126,10 +126,10 @@ class RBFInv(RBF): } """ num_data, num_inducing, input_dim = X.shape[0], X2.shape[0], self.input_dim - #[np.add(target[1+q:2+q],var_len3[q]*np.sum(dvardLdK*np.square(X[:,q][:,None]-X2[:,q][None,:])),target[1+q:2+q]) for q in range(self.input_dim)] - weave.inline(code, arg_names=['num_data','num_inducing','input_dim','X','X2','target','dvardLdK','var_len3', 'len2'], type_converters=weave.converters.blitz, **self.weave_options) + # [np.add(target[1+q:2+q],var_len3[q]*np.sum(dvardLdK*np.square(X[:,q][:,None]-X2[:,q][None,:])),target[1+q:2+q]) for q in range(self.input_dim)] + weave.inline(code, arg_names=['num_data', 'num_inducing', 'input_dim', 'X', 'X2', 'target', 'dvardLdK', 'var_len3', 'len2'], type_converters=weave.converters.blitz, **self.weave_options) else: - target[1] += (self.variance / self.lengthscale) * np.sum(self._K_dvar * self._K_dist2 * dL_dK)*(-self.lengthscale2) + target[1] += (self.variance / self.lengthscale) * np.sum(self._K_dvar * self._K_dist2 * dL_dK) * (-self.lengthscale2) def dK_dX(self, dL_dK, X, X2, target): self._K_computations(X, X2) @@ -159,21 +159,21 @@ class RBFInv(RBF): def dpsi1_dtheta(self, dL_dpsi1, Z, mu, S, target): self._psi_computations(Z, mu, S) - ##d_length = self._psi1[:, :, None] * (-0.5 * ((np.square((self._psi1_dist)/(self.inv_lengthscale * S[:,None,:] + 1))) + ((S[:, None, :])/(self.inv_lengthscale * S[:, None, :] + 1)))) - tmp = 1 + S[:,None,:]*self.inv_lengthscale2 - #inv_len3 = np.power(self.inv_lengthscale,3) - d_length = -(self._psi1[:, :, None] * ((np.square(self._psi1_dist) * self.inv_lengthscale)/(tmp**2) + (S[:,None,:]*self.inv_lengthscale)/(tmp))) + # #d_length = self._psi1[:, :, None] * (-0.5 * ((np.square((self._psi1_dist)/(self.inv_lengthscale * S[:,None,:] + 1))) + ((S[:, None, :])/(self.inv_lengthscale * S[:, None, :] + 1)))) + tmp = 1 + S[:, None, :] * self.inv_lengthscale2 + # inv_len3 = np.power(self.inv_lengthscale,3) + d_length = -(self._psi1[:, :, None] * ((np.square(self._psi1_dist) * self.inv_lengthscale) / (tmp ** 2) + (S[:, None, :] * self.inv_lengthscale) / (tmp))) target[0] += np.sum(dL_dpsi1 * self._psi1 / self.variance) dpsi1_dlength = d_length * dL_dpsi1[:, :, None] if not self.ARD: - target[1] += dpsi1_dlength.sum()#*(-self.lengthscale2) + target[1] += dpsi1_dlength.sum() # *(-self.lengthscale2) else: - target[1:] += dpsi1_dlength.sum(0).sum(0)#*(-self.lengthscale2) - #target[1:] = target[1:]*(-self.lengthscale2) + target[1:] += dpsi1_dlength.sum(0).sum(0) # *(-self.lengthscale2) + # target[1:] = target[1:]*(-self.lengthscale2) def dpsi1_dZ(self, dL_dpsi1, Z, mu, S, target): self._psi_computations(Z, mu, S) - dpsi1_dZ = -self._psi1[:, :, None] * ((self.inv_lengthscale2*self._psi1_dist)/self._psi1_denom) + dpsi1_dZ = -self._psi1[:, :, None] * ((self.inv_lengthscale2 * self._psi1_dist) / self._psi1_denom) target += np.sum(dL_dpsi1[:, :, None] * dpsi1_dZ, 0) def dpsi1_dmuS(self, dL_dpsi1, Z, mu, S, target_mu, target_S): @@ -186,15 +186,15 @@ class RBFInv(RBF): """Shape N,num_inducing,num_inducing,Ntheta""" self._psi_computations(Z, mu, S) d_var = 2.*self._psi2 / self.variance - #d_length = 2.*self._psi2[:, :, :, None] * (self._psi2_Zdist_sq * self._psi2_denom + self._psi2_mudist_sq + S[:, None, None, :] / self.lengthscale2) / (self.lengthscale * self._psi2_denom) + # d_length = 2.*self._psi2[:, :, :, None] * (self._psi2_Zdist_sq * self._psi2_denom + self._psi2_mudist_sq + S[:, None, None, :] / self.lengthscale2) / (self.lengthscale * self._psi2_denom) d_length = -2.*self._psi2[:, :, :, None] * (self._psi2_Zdist_sq * self._psi2_denom + self._psi2_mudist_sq + S[:, None, None, :] * self.inv_lengthscale2) / (self.inv_lengthscale * self._psi2_denom) target[0] += np.sum(dL_dpsi2 * d_var) dpsi2_dlength = d_length * dL_dpsi2[:, :, :, None] if not self.ARD: - target[1] += dpsi2_dlength.sum()#*(-self.lengthscale2) + target[1] += dpsi2_dlength.sum() # *(-self.lengthscale2) else: - target[1:] += dpsi2_dlength.sum(0).sum(0).sum(0)#*(-self.lengthscale2) - #target[1:] = target[1:]*(-self.lengthscale2) + target[1:] += dpsi2_dlength.sum(0).sum(0).sum(0) # *(-self.lengthscale2) + # target[1:] = target[1:]*(-self.lengthscale2) def dpsi2_dZ(self, dL_dpsi2, Z, mu, S, target): self._psi_computations(Z, mu, S) @@ -217,7 +217,7 @@ class RBFInv(RBF): def _K_computations(self, X, X2): if not (np.array_equal(X, self._X) and np.array_equal(X2, self._X2) and np.array_equal(self._params , self._get_params())): self._X = X.copy() - self._params == self._get_params().copy() + self._params = self._get_params().copy() if X2 is None: self._X2 = None X = X * self.inv_lengthscale @@ -233,41 +233,40 @@ class RBFInv(RBF): def _psi_computations(self, Z, mu, S): # here are the "statistics" for psi1 and psi2 if not np.array_equal(Z, self._Z): - #Z has changed, compute Z specific stuff - self._psi2_Zhat = 0.5*(Z[:,None,:] +Z[None,:,:]) # M,M,Q - self._psi2_Zdist = 0.5*(Z[:,None,:]-Z[None,:,:]) # M,M,Q - self._psi2_Zdist_sq = np.square(self._psi2_Zdist*self.inv_lengthscale) # M,M,Q - self._Z = Z + # Z has changed, compute Z specific stuff + self._psi2_Zhat = 0.5 * (Z[:, None, :] + Z[None, :, :]) # M,M,Q + self._psi2_Zdist = 0.5 * (Z[:, None, :] - Z[None, :, :]) # M,M,Q + self._psi2_Zdist_sq = np.square(self._psi2_Zdist * self.inv_lengthscale) # M,M,Q if not (np.array_equal(Z, self._Z) and np.array_equal(mu, self._mu) and np.array_equal(S, self._S)): - #something's changed. recompute EVERYTHING + # something's changed. recompute EVERYTHING - #psi1 - self._psi1_denom = S[:,None,:]*self.inv_lengthscale2 + 1. - self._psi1_dist = Z[None,:,:]-mu[:,None,:] - self._psi1_dist_sq = (np.square(self._psi1_dist)*self.inv_lengthscale2)/self._psi1_denom - self._psi1_exponent = -0.5*np.sum(self._psi1_dist_sq+np.log(self._psi1_denom),-1) - self._psi1 = self.variance*np.exp(self._psi1_exponent) + # psi1 + self._psi1_denom = S[:, None, :] * self.inv_lengthscale2 + 1. + self._psi1_dist = Z[None, :, :] - mu[:, None, :] + self._psi1_dist_sq = (np.square(self._psi1_dist) * self.inv_lengthscale2) / self._psi1_denom + self._psi1_exponent = -0.5 * np.sum(self._psi1_dist_sq + np.log(self._psi1_denom), -1) + self._psi1 = self.variance * np.exp(self._psi1_exponent) - #psi2 - self._psi2_denom = 2.*S[:,None,None,:]*self.inv_lengthscale2+1. # N,M,M,Q - self._psi2_mudist, self._psi2_mudist_sq, self._psi2_exponent, _ = self.weave_psi2(mu,self._psi2_Zhat) - #self._psi2_mudist = mu[:,None,None,:]-self._psi2_Zhat #N,M,M,Q - #self._psi2_mudist_sq = np.square(self._psi2_mudist)/(self.lengthscale2*self._psi2_denom) - #self._psi2_exponent = np.sum(-self._psi2_Zdist_sq -self._psi2_mudist_sq -0.5*np.log(self._psi2_denom),-1) #N,M,M,Q - self._psi2 = np.square(self.variance)*np.exp(self._psi2_exponent) # N,M,M,Q + # psi2 + self._psi2_denom = 2.*S[:, None, None, :] * self.inv_lengthscale2 + 1. # N,M,M,Q + self._psi2_mudist, self._psi2_mudist_sq, self._psi2_exponent, _ = self.weave_psi2(mu, self._psi2_Zhat) + # self._psi2_mudist = mu[:,None,None,:]-self._psi2_Zhat #N,M,M,Q + # self._psi2_mudist_sq = np.square(self._psi2_mudist)/(self.lengthscale2*self._psi2_denom) + # self._psi2_exponent = np.sum(-self._psi2_Zdist_sq -self._psi2_mudist_sq -0.5*np.log(self._psi2_denom),-1) #N,M,M,Q + self._psi2 = np.square(self.variance) * np.exp(self._psi2_exponent) # N,M,M,Q - #store matrices for caching - self._Z, self._mu, self._S = Z, mu,S + # store matrices for caching + self._Z, self._mu, self._S = Z, mu, S - def weave_psi2(self,mu,Zhat): - N,input_dim = mu.shape + def weave_psi2(self, mu, Zhat): + N, input_dim = mu.shape num_inducing = Zhat.shape[0] - mudist = np.empty((N,num_inducing,num_inducing,input_dim)) - mudist_sq = np.empty((N,num_inducing,num_inducing,input_dim)) - psi2_exponent = np.zeros((N,num_inducing,num_inducing)) - psi2 = np.empty((N,num_inducing,num_inducing)) + mudist = np.empty((N, num_inducing, num_inducing, input_dim)) + mudist_sq = np.empty((N, num_inducing, num_inducing, input_dim)) + psi2_exponent = np.zeros((N, num_inducing, num_inducing)) + psi2 = np.empty((N, num_inducing, num_inducing)) psi2_Zdist_sq = self._psi2_Zdist_sq _psi2_denom = self._psi2_denom.squeeze().reshape(N, self.input_dim) @@ -317,7 +316,7 @@ class RBFInv(RBF): #include """ weave.inline(code, support_code=support_code, libraries=['gomp'], - arg_names=['N','num_inducing','input_dim','mu','Zhat','mudist_sq','mudist','inv_lengthscale2','_psi2_denom','psi2_Zdist_sq','psi2_exponent','half_log_psi2_denom','psi2','variance_sq'], + arg_names=['N', 'num_inducing', 'input_dim', 'mu', 'Zhat', 'mudist_sq', 'mudist', 'inv_lengthscale2', '_psi2_denom', 'psi2_Zdist_sq', 'psi2_exponent', 'half_log_psi2_denom', 'psi2', 'variance_sq'], type_converters=weave.converters.blitz, **self.weave_options) return mudist, mudist_sq, psi2_exponent, psi2 From 3f52b687c69689bd2630c14077dd9d1c247d7829 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Thu, 18 Jul 2013 15:50:47 +0100 Subject: [PATCH 067/135] added gradient checker model --- GPy/models/gradient_checker.py | 89 ++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 GPy/models/gradient_checker.py diff --git a/GPy/models/gradient_checker.py b/GPy/models/gradient_checker.py new file mode 100644 index 00000000..e113da84 --- /dev/null +++ b/GPy/models/gradient_checker.py @@ -0,0 +1,89 @@ +''' +Created on 17 Jul 2013 + +@author: maxz +''' +from GPy.core.model import Model +import itertools +import numpy + +def get_shape(x): + if isinstance(x, numpy.ndarray): + return x.shape + return () + +def at_least_one_element(x): + if isinstance(x, (list, tuple)): + return x + return [x] + +def flatten_if_needed(x): + return numpy.atleast_1d(x).flatten() + +class GradientChecker(Model): + + def __init__(self, f, df, x0, names=None, *args, **kwargs): + """ + :param f: Function to check gradient for + :param df: Gradient of function to check + :param x0: + Initial guess for inputs x (if it has a shape (a,b) this will be reflected in the parameter names). + Can be a list of arrays, if takes a list of arrays. This list will be passed + to f and df in the same order as given here. + If only one argument, make sure not to pass a list!!! + + :type x0: [array-like] | array-like | float | int + :param names: + Names to print, when performing gradcheck. If a list was passed to x0 + a list of names with the same length is expected. + :param args: Arguments passed as f(x, *args, **kwargs) and df(x, *args, **kwargs) + """ + Model.__init__(self) + self.f = f + self.df = df + if isinstance(x0, (list, tuple)) and names is None: + self.shapes = [get_shape(xi) for xi in x0] + self.names = ['X{i}'.format(i=i) for i in range(len(x0))] + elif isinstance(x0, (list, tuple)) and names is not None: + self.shapes = [get_shape(xi) for xi in x0] + self.names = names + elif names is None: + self.names = ['X'] + self.shapes = [get_shape(x0)] + else: + self.names = names + self.shapes = [get_shape(x0)] + for name, xi in zip(self.names, at_least_one_element(x0)): + self.__setattr__(name, xi) + self._param_names = [] + for name, shape in zip(self.names, self.shapes): + self._param_names.extend(map(lambda nameshape: ('_'.join(nameshape)).strip('_'), itertools.izip(itertools.repeat(name), itertools.imap(lambda t: '_'.join(map(str, t)), itertools.product(*map(lambda xi: range(xi), shape)))))) + self.args = args + self.kwargs = kwargs + + def _get_x(self): + if len(self.names) > 1: + return [self.__getattribute__(name) for name in self.names] + return self.__getattribute__(self.names[0]) + + def log_likelihood(self): + return numpy.atleast_1d(self.f(self._get_x(), *self.args, **self.kwargs)) + + def _log_likelihood_gradients(self): + return numpy.atleast_1d(self.df(self._get_x(), *self.args, **self.kwargs)) + + + def _get_params(self): + return numpy.atleast_1d(numpy.hstack(map(lambda name: flatten_if_needed(self.__getattribute__(name)), self.names))) + + + def _set_params(self, x): + current_index = 0 + for name, shape in zip(self.names, self.shapes): + current_size = numpy.prod(shape) + self.__setattr__(name, x[current_index:current_index + current_size].reshape(shape)) + current_index += current_size + + def _get_param_names(self): + return self._param_names + From b653feb7818ed24c39f051923245a4ec8310940e Mon Sep 17 00:00:00 2001 From: Andreas Date: Thu, 18 Jul 2013 16:06:12 +0100 Subject: [PATCH 068/135] Fixed asarray in example toy_ARD --- GPy/examples/regression.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GPy/examples/regression.py b/GPy/examples/regression.py index cc92c543..0363f372 100644 --- a/GPy/examples/regression.py +++ b/GPy/examples/regression.py @@ -67,8 +67,8 @@ def toy_ARD(optim_iters=1000, kernel_type='linear', N=300, D=4): X4 = np.log(np.sort(np.random.rand(N,1),0)) X = np.hstack((X1, X2, X3, X4)) - Y1 = np.asarray(2*X[:,0]+3).T - Y2 = np.asarray(4*(X[:,2]-1.5*X[:,0])).T + Y1 = np.asarray(2*X[:,0]+3).reshape(-1,1) + Y2 = np.asarray(4*(X[:,2]-1.5*X[:,0])).reshape(-1,1) Y = np.hstack((Y1, Y2)) Y = np.dot(Y, np.random.rand(2,D)); From 0eac358f469877bf9073255aac743cd9372d0c8b Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Thu, 18 Jul 2013 16:42:17 +0100 Subject: [PATCH 069/135] rbf kern chaching bug fixed --- GPy/examples/dimensionality_reduction.py | 14 +++++++------- GPy/kern/kern.py | 6 +++++- GPy/kern/parts/rbf.py | 7 ++++--- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/GPy/examples/dimensionality_reduction.py b/GPy/examples/dimensionality_reduction.py index bd316eba..85528b72 100644 --- a/GPy/examples/dimensionality_reduction.py +++ b/GPy/examples/dimensionality_reduction.py @@ -24,7 +24,7 @@ def BGPLVM(seed=default_seed): Y = np.random.multivariate_normal(np.zeros(N), K, Q).T lik = Gaussian(Y, normalize=True) - k = GPy.kern.rbf_inv(Q, ARD=True) + GPy.kern.bias(Q) + GPy.kern.white(Q) + k = GPy.kern.rbf(Q, ARD=True) + GPy.kern.bias(Q) + GPy.kern.white(Q) # k = GPy.kern.rbf(Q) + GPy.kern.bias(Q) + GPy.kern.white(Q, 0.00001) # k = GPy.kern.rbf(Q, ARD = False) + GPy.kern.white(Q, 0.00001) @@ -144,7 +144,7 @@ def BGPLVM_oil(optimize=True, N=200, Q=10, num_inducing=15, max_iters=150, plot= data = GPy.util.datasets.oil() # create simple GP model - kernel = GPy.kern.rbf_inv(Q, ARD=True) + GPy.kern.bias(Q, np.exp(-2)) + GPy.kern.white(Q, np.exp(-2)) + kernel = GPy.kern.rbf(Q, ARD=True) + GPy.kern.bias(Q, np.exp(-2)) + GPy.kern.white(Q, np.exp(-2)) Y = data['X'][:N] Yn = Y - Y.mean(0) @@ -160,9 +160,9 @@ def BGPLVM_oil(optimize=True, N=200, Q=10, num_inducing=15, max_iters=150, plot= # optimize if optimize: - m.constrain_fixed('noise') - m.optimize('scg', messages=1, max_iters=200, gtol=.05) - m.constrain_positive('noise') +# m.constrain_fixed('noise') +# m.optimize('scg', messages=1, max_iters=200, gtol=.05) +# m.constrain_positive('noise') m.optimize('scg', messages=1, max_iters=max_iters, gtol=.05) if plot: @@ -377,10 +377,10 @@ def stick_bgplvm(model=None): data = GPy.util.datasets.stick() Q = 6 kernel = GPy.kern.rbf(Q, ARD=True) + GPy.kern.bias(Q, np.exp(-2)) + GPy.kern.white(Q, np.exp(-2)) - m = BayesianGPLVM(data['Y'], Q, init="PCA", num_inducing=20,kernel=kernel) + m = BayesianGPLVM(data['Y'], Q, init="PCA", num_inducing=20, kernel=kernel) # optimize m.ensure_default_constraints() - m.optimize(messages=1, max_iters=3000,xtol=1e-300,ftol=1e-300) + m.optimize(messages=1, max_iters=3000, xtol=1e-300, ftol=1e-300) m._set_params(m._get_params()) plt.clf, (latent_axes, sense_axes) = plt.subplots(1, 2) plt.sca(latent_axes) diff --git a/GPy/kern/kern.py b/GPy/kern/kern.py index 8db28e0a..b2b99094 100644 --- a/GPy/kern/kern.py +++ b/GPy/kern/kern.py @@ -104,6 +104,8 @@ class kern(Parameterized): x = np.arange(x0) transOffset = offset_copy(ax.transData, fig=fig, x=0., y= -2., units='points') + transOffsetUp = offset_copy(ax.transData, fig=fig, + x=0., y=2., units='points') for bar in bars: for patch, num in zip(bar.patches, np.arange(len(bar.patches))): height = patch.get_height() @@ -111,10 +113,12 @@ class kern(Parameterized): va = 'top' c = 'w' t = TextPath((0, 0), "${xi}$".format(xi=xi), rotation=0, usetex=True, ha='center') + transform = transOffset if patch.get_extents().height <= t.get_extents().height + 2: va = 'bottom' c = 'k' - ax.text(xi, height, "${xi}$".format(xi=int(num)), color=c, rotation=0, ha='center', va=va, transform=transOffset) + transform = transOffsetUp + ax.text(xi, height, "${xi}$".format(xi=int(num)), color=c, rotation=0, ha='center', va=va, transform=transform) # for xi, t in zip(x, xticklabels): # ax.text(xi, maxi / 2, t, rotation=90, ha='center', va='center') # ax.set_xticklabels(xticklabels, rotation=17) diff --git a/GPy/kern/parts/rbf.py b/GPy/kern/parts/rbf.py index f8ef57df..345134bd 100644 --- a/GPy/kern/parts/rbf.py +++ b/GPy/kern/parts/rbf.py @@ -221,9 +221,10 @@ class RBF(Kernpart): #---------------------------------------# def _K_computations(self, X, X2): - if not (fast_array_equal(X, self._X) and fast_array_equal(X2, self._X2) and fast_array_equal(self._params , self._get_params())): + params = self._get_params() + if not (fast_array_equal(X, self._X) and fast_array_equal(X2, self._X2) and fast_array_equal(self._params , params)): self._X = X.copy() - self._params = self._get_params().copy() + self._params = params.copy() if X2 is None: self._X2 = None X = X / self.lengthscale @@ -244,7 +245,7 @@ class RBF(Kernpart): self._psi2_Zdist = 0.5 * (Z[:, None, :] - Z[None, :, :]) # M,M,Q self._psi2_Zdist_sq = np.square(self._psi2_Zdist / self.lengthscale) # M,M,Q - if not (fast_array_equal(Z, self._Z) and fast_array_equal(mu, self._mu) and fast_array_equal(S, self._S)): + if not fast_array_equal(Z, self._Z) or not fast_array_equal(mu, self._mu) or not fast_array_equal(S, self._S): # something's changed. recompute EVERYTHING # psi1 From d36ba011ef33102d9c9daf304c0d3565409a8fd7 Mon Sep 17 00:00:00 2001 From: James Hensman Date: Fri, 19 Jul 2013 10:27:58 +0100 Subject: [PATCH 070/135] changes to psi2 in linear --- GPy/kern/parts/linear.py | 45 ++++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/GPy/kern/parts/linear.py b/GPy/kern/parts/linear.py index 04bd78a4..82a8c263 100644 --- a/GPy/kern/parts/linear.py +++ b/GPy/kern/parts/linear.py @@ -140,30 +140,26 @@ class Linear(Kernpart): def dpsi1_dZ(self, dL_dpsi1, Z, mu, S, target): self.dK_dX(dL_dpsi1.T, Z, mu, target) - def psi2(self, Z, mu, S, target): - """ - returns N,num_inducing,num_inducing matrix - """ + def psi2_old(self, Z, mu, S, target): self._psi_computations(Z, mu, S) -# psi2_old = self.ZZ * np.square(self.variances) * self.mu2_S[:, None, None, :] -# target += psi2.sum(-1) - # slow way of doing it, but right -# psi2_real = rm np.zeros((mu.shape[0], Z.shape[0], Z.shape[0])) -# for n in range(mu.shape[0]): -# for m_prime in range(Z.shape[0]): -# for m in range(Z.shape[0]): -# tmp = self._Z[m:m + 1] * self.variances -# tmp = np.dot(tmp, (tdot(self._mu[n:n + 1].T) + np.diag(S[n]))) -# psi2_real[n, m, m_prime] = np.dot(tmp, ( -# self._Z[m_prime:m_prime + 1] * self.variances).T) -# mu2_S = (self._mu[:, None, :] * self._mu[:, :, None]) -# mu2_S[:, np.arange(self.input_dim), np.arange(self.input_dim)] += self._S -# psi2 = (self.ZA[None, :, None, :] * mu2_S[:, None]).sum(-1) -# psi2 = (psi2[:, :, None] * self.ZA[None, None]).sum(-1) -# psi2_tensor = np.tensordot(self.ZZ[None, :, :, :] * np.square(self.variances), self.mu2_S[:, None, None, :], ((3), (3))).squeeze().T target += self._psi2 + def psi2(self,Z,mu,S,target): + tmp = np.zeros((mu.shape[0], Z.shape[0])) + self.K(mu,Z,tmp) + target += tmp[:,:,None]*tmp[:,None,:] + np.sum(S[:,None,None,:]*self.variances**2*Z[None,:,None,:]*Z[None,None,:,:],-1) + def dpsi2_dtheta(self, dL_dpsi2, Z, mu, S, target): + tmp = np.zeros((mu.shape[0], Z.shape[0])) + self.K(mu,Z,tmp) + self.dK_dtheta(2.*np.sum(dL_dpsi2*tmp[:,None,:],2),mu,Z,target) + result= 2.*(dL_dpsi2[:,:,:,None]*S[:,None,None,:]*self.variances*Z[None,:,None,:]*Z[None,None,:,:]).sum(0).sum(0).sum(0) + if self.ARD: + target += result.sum(0).sum(0).sum(0) + else: + target += result.sum() + + def dpsi2_dtheta_old(self, dL_dpsi2, Z, mu, S, target): self._psi_computations(Z, mu, S) tmp = dL_dpsi2[:, :, :, None] * (self.ZAinner[:, :, None, :] * (2 * Z)[None, None, :, :]) if self.ARD: @@ -172,6 +168,15 @@ class Linear(Kernpart): target += tmp.sum() def dpsi2_dmuS(self, dL_dpsi2, Z, mu, S, target_mu, target_S): + tmp = np.zeros((mu.shape[0], Z.shape[0])) + self.K(mu,Z,tmp) + self.dK_dX(2.*np.sum(dL_dpsi2*tmp[:,None,:],2),mu,Z,target_mu) + + Zs = Z*self.variances + Zs_sq = Zs[:,None,:]*Zs[None,:,:] + target_S += (dL_dpsi2[:,:,:,None]*Zs_sq[None,:,:,:]).sum(1).sum(1) + + def dpsi2_dmuS_old(self, dL_dpsi2, Z, mu, S, target_mu, target_S): """Think N,num_inducing,num_inducing,input_dim """ self._psi_computations(Z, mu, S) AZZA = self.ZA.T[:, None, :, None] * self.ZA[None, :, None, :] From 8981eda665bc468108095991c3a5b004c04ac166 Mon Sep 17 00:00:00 2001 From: Andreas Date: Fri, 19 Jul 2013 10:28:23 +0100 Subject: [PATCH 071/135] Minor fix --- GPy/core/svigp.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GPy/core/svigp.py b/GPy/core/svigp.py index 5d6bcd8b..7d2bec36 100644 --- a/GPy/core/svigp.py +++ b/GPy/core/svigp.py @@ -174,7 +174,7 @@ class SVIGP(GPBase): psi2_beta = (self.psi2 * (self.likelihood.precision.flatten().reshape(self.batchsize, 1, 1))).sum(0) else: psi2_beta = self.psi2.sum(0) * self.likelihood.precision - evals, evecs = linalg.eigh(psi2_beta) + evals, evecs = np.linalg.eigh(psi2_beta) clipped_evals = np.clip(evals, 0., 1e6) # TODO: make clipping configurable tmp = evecs * np.sqrt(clipped_evals) else: From d5cb531d403839ee86f7958724275aa626a3ba11 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Tue, 23 Jul 2013 12:10:32 +0100 Subject: [PATCH 072/135] gradient checker implemented --- GPy/models/__init__.py | 1 + GPy/models/gradient_checker.py | 34 +++++++++++++++++++++++++++------- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/GPy/models/__init__.py b/GPy/models/__init__.py index ea78a011..3fb26b95 100644 --- a/GPy/models/__init__.py +++ b/GPy/models/__init__.py @@ -12,3 +12,4 @@ from sparse_gplvm import SparseGPLVM from warped_gp import WarpedGP from bayesian_gplvm import BayesianGPLVM from mrd import MRD +from gradient_checker import GradientChecker diff --git a/GPy/models/gradient_checker.py b/GPy/models/gradient_checker.py index e113da84..f76796e7 100644 --- a/GPy/models/gradient_checker.py +++ b/GPy/models/gradient_checker.py @@ -37,10 +37,29 @@ class GradientChecker(Model): Names to print, when performing gradcheck. If a list was passed to x0 a list of names with the same length is expected. :param args: Arguments passed as f(x, *args, **kwargs) and df(x, *args, **kwargs) + + Examples: + --------- + + Sinusoid: + + X = numpy.random.rand(N, Q) + f = lambda x: numpy.sin(x) + df = lambda x: numpy.cos(x) + grad = gc.GradientChecker(f,df,X,'x') + + Using GPy: + + N, M, Q = 10, 5, 3 + X, Z = numpy.random.randn(N,Q), numpy.random.randn(M,Q) + kern = GPy.kern.linear(Q, ARD=True) + GPy.kern.rbf(Q, ARD=True) + import GPy.models.gradient_checker as gc + grad = gc.GradientChecker(kern.K, + lambda x: 2*kern.dK_dX(numpy.ones((1,1)), x), + x0 = X.copy(), + names='X') """ Model.__init__(self) - self.f = f - self.df = df if isinstance(x0, (list, tuple)) and names is None: self.shapes = [get_shape(xi) for xi in x0] self.names = ['X{i}'.format(i=i) for i in range(len(x0))] @@ -60,17 +79,19 @@ class GradientChecker(Model): self._param_names.extend(map(lambda nameshape: ('_'.join(nameshape)).strip('_'), itertools.izip(itertools.repeat(name), itertools.imap(lambda t: '_'.join(map(str, t)), itertools.product(*map(lambda xi: range(xi), shape)))))) self.args = args self.kwargs = kwargs + self.f = f + self.df = df def _get_x(self): if len(self.names) > 1: - return [self.__getattribute__(name) for name in self.names] - return self.__getattribute__(self.names[0]) + return [self.__getattribute__(name) for name in self.names] + list(self.args) + return [self.__getattribute__(self.names[0])] + list(self.args) def log_likelihood(self): - return numpy.atleast_1d(self.f(self._get_x(), *self.args, **self.kwargs)) + return float(numpy.sum(self.f(*self._get_x(), **self.kwargs))) def _log_likelihood_gradients(self): - return numpy.atleast_1d(self.df(self._get_x(), *self.args, **self.kwargs)) + return numpy.atleast_1d(self.df(*self._get_x(), **self.kwargs)).flatten() def _get_params(self): @@ -86,4 +107,3 @@ class GradientChecker(Model): def _get_param_names(self): return self._param_names - From 01b35b1178b796cc5bf2e11d21b96231057b297f Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Tue, 23 Jul 2013 13:02:20 +0100 Subject: [PATCH 073/135] gradient checker implemented --- GPy/models/gradient_checker.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/GPy/models/gradient_checker.py b/GPy/models/gradient_checker.py index f76796e7..1b4071d4 100644 --- a/GPy/models/gradient_checker.py +++ b/GPy/models/gradient_checker.py @@ -40,24 +40,28 @@ class GradientChecker(Model): Examples: --------- + from GPy.models import GradientChecker + N, M, Q = 10, 5, 3 Sinusoid: X = numpy.random.rand(N, Q) - f = lambda x: numpy.sin(x) - df = lambda x: numpy.cos(x) - grad = gc.GradientChecker(f,df,X,'x') + grad = GradientChecker(numpy.sin,numpy.cos,X,'x') + grad.checkgrad(verbose=1) + grad.randomize() + grad.checkgrad(verbose=1) Using GPy: - N, M, Q = 10, 5, 3 X, Z = numpy.random.randn(N,Q), numpy.random.randn(M,Q) kern = GPy.kern.linear(Q, ARD=True) + GPy.kern.rbf(Q, ARD=True) - import GPy.models.gradient_checker as gc - grad = gc.GradientChecker(kern.K, - lambda x: 2*kern.dK_dX(numpy.ones((1,1)), x), - x0 = X.copy(), - names='X') + grad = GradientChecker(kern.K, + lambda x: 2*kern.dK_dX(numpy.ones((1,1)), x), + x0 = X.copy(), + names='X') + grad.checkgrad(verbose=1) + grad.randomize() + grad.checkgrad(verbose=1) """ Model.__init__(self) if isinstance(x0, (list, tuple)) and names is None: From 112ae7712d701ff96de50e77d3ba49a66b179d32 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Tue, 23 Jul 2013 14:38:47 +0100 Subject: [PATCH 074/135] gradient checker implemented --- GPy/models/gradient_checker.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/GPy/models/gradient_checker.py b/GPy/models/gradient_checker.py index 1b4071d4..fa49ee0e 100644 --- a/GPy/models/gradient_checker.py +++ b/GPy/models/gradient_checker.py @@ -48,8 +48,6 @@ class GradientChecker(Model): X = numpy.random.rand(N, Q) grad = GradientChecker(numpy.sin,numpy.cos,X,'x') grad.checkgrad(verbose=1) - grad.randomize() - grad.checkgrad(verbose=1) Using GPy: From e3af917b1b6fae8132bdcef80fd9b9b614703559 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Wed, 24 Jul 2013 15:30:30 +0100 Subject: [PATCH 075/135] Merge of rbf_inv failed, corrected with AD --- GPy/kern/parts/rbf_inv.py | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/GPy/kern/parts/rbf_inv.py b/GPy/kern/parts/rbf_inv.py index 3512f555..649da044 100644 --- a/GPy/kern/parts/rbf_inv.py +++ b/GPy/kern/parts/rbf_inv.py @@ -159,20 +159,21 @@ class RBFInv(RBF): def dpsi1_dtheta(self, dL_dpsi1, Z, mu, S, target): self._psi_computations(Z, mu, S) - tmp = 1 + S[:,None,:]*self.inv_lengthscale2 - d_inv_length_old = -self._psi1[:,:,None] * ((self._psi1_dist_sq - 1.)/(self.lengthscale*self._psi1_denom) + self.inv_lengthscale)/self.inv_lengthscale2 - d_inv_length = -self._psi1[:,:,None] * ((self._psi1_dist_sq - 1.)/self._psi1_denom + self.lengthscale) + tmp = 1 + S[:, None, :] * self.inv_lengthscale2 + # d_inv_length_old = -self._psi1[:, :, None] * ((self._psi1_dist_sq - 1.) / (self.lengthscale * self._psi1_denom) + self.inv_lengthscale) / self.inv_lengthscale2 + d_length = -(self._psi1[:, :, None] * ((np.square(self._psi1_dist) * self.inv_lengthscale) / (tmp ** 2) + (S[:, None, :] * self.inv_lengthscale) / (tmp))) + # d_inv_length = -self._psi1[:, :, None] * ((self._psi1_dist_sq - 1.) / self._psi1_denom + self.lengthscale) target[0] += np.sum(dL_dpsi1 * self._psi1 / self.variance) - dpsi1_dlength = d_inv_length * dL_dpsi1[:, :, None] + dpsi1_dlength = d_length * dL_dpsi1[:, :, None] if not self.ARD: - target[1] += dpsi1_dlength.sum()#*(-self.lengthscale2) + target[1] += dpsi1_dlength.sum() # *(-self.lengthscale2) else: - target[1:] += dpsi1_dlength.sum(0).sum(0)#*(-self.lengthscale2) - #target[1:] = target[1:]*(-self.lengthscale2) + target[1:] += dpsi1_dlength.sum(0).sum(0) # *(-self.lengthscale2) + # target[1:] = target[1:]*(-self.lengthscale2) def dpsi1_dZ(self, dL_dpsi1, Z, mu, S, target): self._psi_computations(Z, mu, S) - dpsi1_dZ = -self._psi1[:, :, None] * ((self.inv_lengthscale2*self._psi1_dist)/self._psi1_denom) + dpsi1_dZ = -self._psi1[:, :, None] * ((self.inv_lengthscale2 * self._psi1_dist) / self._psi1_denom) target += np.sum(dL_dpsi1[:, :, None] * dpsi1_dZ, 0) def dpsi1_dmuS(self, dL_dpsi1, Z, mu, S, target_mu, target_S): @@ -185,15 +186,15 @@ class RBFInv(RBF): """Shape N,num_inducing,num_inducing,Ntheta""" self._psi_computations(Z, mu, S) d_var = 2.*self._psi2 / self.variance - #d_length = 2.*self._psi2[:, :, :, None] * (self._psi2_Zdist_sq * self._psi2_denom + self._psi2_mudist_sq + S[:, None, None, :] / self.lengthscale2) / (self.lengthscale * self._psi2_denom) + # d_length = 2.*self._psi2[:, :, :, None] * (self._psi2_Zdist_sq * self._psi2_denom + self._psi2_mudist_sq + S[:, None, None, :] / self.lengthscale2) / (self.lengthscale * self._psi2_denom) d_length = -2.*self._psi2[:, :, :, None] * (self._psi2_Zdist_sq * self._psi2_denom + self._psi2_mudist_sq + S[:, None, None, :] * self.inv_lengthscale2) / (self.inv_lengthscale * self._psi2_denom) target[0] += np.sum(dL_dpsi2 * d_var) dpsi2_dlength = d_length * dL_dpsi2[:, :, :, None] if not self.ARD: - target[1] += dpsi2_dlength.sum()#*(-self.lengthscale2) + target[1] += dpsi2_dlength.sum() # *(-self.lengthscale2) else: - target[1:] += dpsi2_dlength.sum(0).sum(0).sum(0)#*(-self.lengthscale2) - #target[1:] = target[1:]*(-self.lengthscale2) + target[1:] += dpsi2_dlength.sum(0).sum(0).sum(0) # *(-self.lengthscale2) + # target[1:] = target[1:]*(-self.lengthscale2) def dpsi2_dZ(self, dL_dpsi2, Z, mu, S, target): self._psi_computations(Z, mu, S) From f469ce8f417d5b30f0d080597132498152445794 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Mon, 29 Jul 2013 15:18:22 +0100 Subject: [PATCH 076/135] ard and latent plotting improved --- GPy/kern/kern.py | 19 +++++++------ GPy/util/plot_latent.py | 60 ++++++++++++++++++++++++++--------------- 2 files changed, 50 insertions(+), 29 deletions(-) diff --git a/GPy/kern/kern.py b/GPy/kern/kern.py index b2b99094..be715335 100644 --- a/GPy/kern/kern.py +++ b/GPy/kern/kern.py @@ -79,6 +79,8 @@ class kern(Parameterized): if ax is None: fig = pb.figure(fignum) ax = fig.add_subplot(111) + else: + fig = ax.figure from GPy.util import Tango from matplotlib.textpath import TextPath Tango.reset() @@ -124,15 +126,16 @@ class kern(Parameterized): # ax.set_xticklabels(xticklabels, rotation=17) ax.set_xticks([]) ax.set_xlim(-.5, x0 - .5) - if title is '': - mode = 'expand' - if len(bars) > 1: + if legend: + if title is '': mode = 'expand' - ax.legend(bbox_to_anchor=(0., 1.02, 1., 1.02), loc=3, - ncol=len(bars), mode=mode, borderaxespad=0.) - fig.tight_layout(rect=(0, 0, 1, .9)) - else: - ax.legend() + if len(bars) > 1: + mode = 'expand' + ax.legend(bbox_to_anchor=(0., 1.02, 1., 1.02), loc=3, + ncol=len(bars), mode=mode, borderaxespad=0.) + fig.tight_layout(rect=(0, 0, 1, .9)) + else: + ax.legend() return ax def _transform_gradients(self, g): diff --git a/GPy/util/plot_latent.py b/GPy/util/plot_latent.py index d89d90d8..4a19ea5b 100644 --- a/GPy/util/plot_latent.py +++ b/GPy/util/plot_latent.py @@ -1,19 +1,10 @@ import pylab as pb import numpy as np from .. import util +from GPy.util.latent_space_visualizations.controllers.imshow_controller import ImshowController +import itertools -def plot_latent(model, labels=None, which_indices=None, resolution=50, ax=None, marker='o', s=40, fignum=None, plot_inducing=False, legend=True): - """ - :param labels: a np.array of size model.num_data containing labels for the points (can be number, strings, etc) - :param resolution: the resolution of the grid on which to evaluate the predictive variance - """ - if ax is None: - fig = pb.figure(num=fignum) - ax = fig.add_subplot(111) - util.plot.Tango.reset() - - if labels is None: - labels = np.ones(model.num_data) +def most_significant_input_dimensions(model, which_indices): if which_indices is None: if model.input_dim == 1: input_1 = 0 @@ -27,15 +18,40 @@ def plot_latent(model, labels=None, which_indices=None, resolution=50, ax=None, raise ValueError, "cannot Atomatically determine which dimensions to plot, please pass 'which_indices'" else: input_1, input_2 = which_indices + return input_1, input_2 + +def plot_latent(model, labels=None, which_indices=None, + resolution=50, ax=None, marker='o', s=40, + fignum=None, plot_inducing=False, legend=True, + aspect='auto', updates=False): + """ + :param labels: a np.array of size model.num_data containing labels for the points (can be number, strings, etc) + :param resolution: the resolution of the grid on which to evaluate the predictive variance + """ + if ax is None: + fig = pb.figure(num=fignum) + ax = fig.add_subplot(111) + util.plot.Tango.reset() + + if labels is None: + labels = np.ones(model.num_data) + + input_1, input_2 = most_significant_input_dimensions(model, which_indices) # first, plot the output variance as a function of the latent space Xtest, xx, yy, xmin, xmax = util.plot.x_frame2D(model.X[:, [input_1, input_2]], resolution=resolution) Xtest_full = np.zeros((Xtest.shape[0], model.X.shape[1])) - Xtest_full[:, :2] = Xtest - mu, var, low, up = model.predict(Xtest_full) - var = var[:, :1] - ax.imshow(var.reshape(resolution, resolution).T, - extent=[xmin[0], xmax[0], xmin[1], xmax[1]], cmap=pb.cm.binary, interpolation='bilinear', origin='lower') + def plot_function(x): + Xtest_full[:, [input_1, input_2]] = x + mu, var, low, up = model.predict(Xtest_full) + var = var[:, :1] + return var + view = ImshowController(ax, plot_function, tuple(xmin) + tuple(xmax), + resolution, aspect=aspect, interpolation='bilinear', + cmap=pb.cm.binary) + +# ax.imshow(var.reshape(resolution, resolution).T, +# extent=[xmin[0], xmax[0], xmin[1], xmax[1]], cmap=pb.cm.binary, interpolation='bilinear', origin='lower') # make sure labels are in order of input: ulabels = [] @@ -43,6 +59,8 @@ def plot_latent(model, labels=None, which_indices=None, resolution=50, ax=None, if not lab in ulabels: ulabels.append(lab) + marker = itertools.cycle(list(marker)) + for i, ul in enumerate(ulabels): if type(ul) is np.string_: this_label = ul @@ -50,10 +68,7 @@ def plot_latent(model, labels=None, which_indices=None, resolution=50, ax=None, this_label = 'class %i' % ul else: this_label = 'class %i' % i - if len(marker) == len(ulabels): - m = marker[i] - else: - m = marker + m = marker.next() index = np.nonzero(labels == ul)[0] if model.input_dim == 1: @@ -78,4 +93,7 @@ def plot_latent(model, labels=None, which_indices=None, resolution=50, ax=None, if plot_inducing: ax.plot(model.Z[:, input_1], model.Z[:, input_2], '^w') + if updates: + ax.figure.canvas.show() + raw_input('Enter to continue') return ax From ec6f8c5f3b9d782f078ca17b7a7189dabf6fe911 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Mon, 29 Jul 2013 15:19:28 +0100 Subject: [PATCH 077/135] pca initializer more robust to lower dimensions --- GPy/models/gplvm.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/GPy/models/gplvm.py b/GPy/models/gplvm.py index 86c0ac28..d106cd4f 100644 --- a/GPy/models/gplvm.py +++ b/GPy/models/gplvm.py @@ -38,7 +38,8 @@ class GPLVM(GP): def initialise_latent(self, init, input_dim, Y): Xr = np.random.randn(Y.shape[0], input_dim) if init == 'PCA': - Xr[:, :Y.shape[1]] = PCA(Y, input_dim)[0] + PC = PCA(Y, input_dim)[0] + Xr[:PC.shape[0], :PC.shape[1]] = PC return Xr def getstate(self): From bb05c6a02f6cef97187019870d2ac0543a2cfcf4 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Mon, 29 Jul 2013 15:25:57 +0100 Subject: [PATCH 078/135] experimental plotting of gradient in latent space (and addition of steepest gradient dimensions) --- GPy/models/bayesian_gplvm.py | 80 ++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/GPy/models/bayesian_gplvm.py b/GPy/models/bayesian_gplvm.py index ac6c7c69..b77b996d 100644 --- a/GPy/models/bayesian_gplvm.py +++ b/GPy/models/bayesian_gplvm.py @@ -10,6 +10,8 @@ from matplotlib.colors import colorConverter from GPy.inference.optimization import SCG from GPy.util import plot_latent from GPy.models.gplvm import GPLVM +from GPy.util.plot_latent import most_significant_input_dimensions +from matplotlib import pyplot class BayesianGPLVM(SparseGP, GPLVM): """ @@ -148,6 +150,84 @@ class BayesianGPLVM(SparseGP, GPLVM): return means, covars + def dmu_dX(self, Xnew): + """ + Calculate the gradient of the prediction at Xnew w.r.t Xnew. + """ + dmu_dX = np.zeros_like(Xnew) + for i in range(self.Z.shape[0]): + dmu_dX += self.kern.dK_dX(self.Cpsi1Vf[i:i + 1, :], Xnew, self.Z[i:i + 1, :]) + return dmu_dX + + def dmu_dXnew(self, Xnew): + """ + Individual gradient of prediction at Xnew w.r.t. each sample in Xnew + """ + dK_dX = np.zeros((Xnew.shape[0], self.num_inducing)) + ones = np.ones((1, 1)) + for i in range(self.Z.shape[0]): + dK_dX[:, i] = self.kern.dK_dX(ones, Xnew, self.Z[i:i + 1, :]).sum(-1) + return np.dot(dK_dX, self.Cpsi1Vf) + + def plot_steepest_gradient_map(self, fignum=None, ax=None, which_indices=None, labels=None, data_labels=None, data_marker='o', data_s=40, resolution=20, aspect='auto', updates=False, ** kwargs): + input_1, input_2 = significant_dims = most_significant_input_dimensions(self, which_indices) + + X = np.zeros((resolution ** 2, self.input_dim)) + indices = np.r_[:X.shape[0]] + if labels is None: + labels = range(self.input_dim) + + def plot_function(x): + X[:, significant_dims] = x + dmu_dX = self.dmu_dXnew(X) + argmax = np.argmax(dmu_dX, 1) + return dmu_dX[indices, argmax], np.array(labels)[argmax] + + if ax is None: + fig = pyplot.figure(num=fignum) + ax = fig.add_subplot(111) + + if data_labels is None: + data_labels = np.ones(self.num_data) + ulabels = [] + for lab in data_labels: + if not lab in ulabels: + ulabels.append(lab) + marker = itertools.cycle(list(data_marker)) + from GPy.util import Tango + for i, ul in enumerate(ulabels): + if type(ul) is np.string_: + this_label = ul + elif type(ul) is np.int64: + this_label = 'class %i' % ul + else: + this_label = 'class %i' % i + m = marker.next() + index = np.nonzero(data_labels == ul)[0] + x = self.X[index, input_1] + y = self.X[index, input_2] + ax.scatter(x, y, marker=m, s=data_s, color=Tango.nextMedium(), label=this_label) + + ax.set_xlabel('latent dimension %i' % input_1) + ax.set_ylabel('latent dimension %i' % input_2) + + from matplotlib.cm import get_cmap + from GPy.util.latent_space_visualizations.controllers.imshow_controller import ImAnnotateController + controller = ImAnnotateController(ax, + plot_function, + tuple(self.X.min(0)[:, significant_dims]) + tuple(self.X.max(0)[:, significant_dims]), + resolution=resolution, + aspect=aspect, + cmap=get_cmap('jet'), + **kwargs) + ax.legend() + ax.figure.tight_layout() + if updates: + pyplot.show() + clear = raw_input('Enter to continue') + if clear.lower() in 'yes' or clear == '': + controller.deactivate() + return controller.view def plot_X_1d(self, fignum=None, ax=None, colors=None): """ From 76840b6e6efd36a725967dfc0032ea9de15e1240 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Mon, 29 Jul 2013 15:26:49 +0100 Subject: [PATCH 079/135] gradient checker more robust against name changes --- GPy/models/gradient_checker.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/GPy/models/gradient_checker.py b/GPy/models/gradient_checker.py index fa49ee0e..5afcd7c4 100644 --- a/GPy/models/gradient_checker.py +++ b/GPy/models/gradient_checker.py @@ -76,9 +76,9 @@ class GradientChecker(Model): self.shapes = [get_shape(x0)] for name, xi in zip(self.names, at_least_one_element(x0)): self.__setattr__(name, xi) - self._param_names = [] - for name, shape in zip(self.names, self.shapes): - self._param_names.extend(map(lambda nameshape: ('_'.join(nameshape)).strip('_'), itertools.izip(itertools.repeat(name), itertools.imap(lambda t: '_'.join(map(str, t)), itertools.product(*map(lambda xi: range(xi), shape)))))) +# self._param_names = [] +# for name, shape in zip(self.names, self.shapes): +# self._param_names.extend(map(lambda nameshape: ('_'.join(nameshape)).strip('_'), itertools.izip(itertools.repeat(name), itertools.imap(lambda t: '_'.join(map(str, t)), itertools.product(*map(lambda xi: range(xi), shape)))))) self.args = args self.kwargs = kwargs self.f = f @@ -108,4 +108,7 @@ class GradientChecker(Model): current_index += current_size def _get_param_names(self): - return self._param_names + _param_names = [] + for name, shape in zip(self.names, self.shapes): + _param_names.extend(map(lambda nameshape: ('_'.join(nameshape)).strip('_'), itertools.izip(itertools.repeat(name), itertools.imap(lambda t: '_'.join(map(str, t)), itertools.product(*map(lambda xi: range(xi), shape)))))) + return _param_names From 30742ddb8525123480a64ebad4edf3ae0f89f15a Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Mon, 29 Jul 2013 15:27:14 +0100 Subject: [PATCH 080/135] mrd plot_scales improved --- GPy/models/mrd.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/GPy/models/mrd.py b/GPy/models/mrd.py index 228494aa..1bcd5d18 100644 --- a/GPy/models/mrd.py +++ b/GPy/models/mrd.py @@ -299,6 +299,8 @@ class MRD(Model): else: raise ValueError("Need one axes per latent dimension input_dim") plotf(i, g, ax) + if sharey_ax is not None: + pylab.setp(ax.get_yticklabels(), visible=False) pylab.draw() if axes is None: fig.tight_layout() From 92c6e652d90ee3aa64be09ae3779fca7229b6b34 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Mon, 29 Jul 2013 15:28:44 +0100 Subject: [PATCH 081/135] minor adjustment to fast_array_equal --- GPy/util/misc.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GPy/util/misc.py b/GPy/util/misc.py index 0914adb8..29d69848 100644 --- a/GPy/util/misc.py +++ b/GPy/util/misc.py @@ -108,12 +108,12 @@ def fast_array_equal(A, B): elif ((A == None) and (B != None)) or ((A != None) and (B == None)): return False elif A.shape == B.shape: - if len(A.shape) == 2: + if A.ndim == 2: N, D = A.shape value = weave.inline(code2, support_code=support_code, libraries=['gomp'], arg_names=['A', 'B', 'N', 'D'], type_converters=weave.converters.blitz,**weave_options) - elif len(A.shape) == 3: + elif A.ndim == 3: N, D, Q = A.shape value = weave.inline(code3, support_code=support_code, libraries=['gomp'], arg_names=['A', 'B', 'N', 'D', 'Q'], From 3051c2a7e5c262bf7155844f9623114ad299a833 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Mon, 29 Jul 2013 15:29:00 +0100 Subject: [PATCH 082/135] minor/pep8 --- GPy/core/model.py | 2 +- GPy/examples/dimensionality_reduction.py | 23 +++++++++++-------- ...tests.py => psi_stat_expectation_tests.py} | 0 3 files changed, 14 insertions(+), 11 deletions(-) rename GPy/testing/{psi_stat_expactation_tests.py => psi_stat_expectation_tests.py} (100%) diff --git a/GPy/core/model.py b/GPy/core/model.py index 452138cc..c7996153 100644 --- a/GPy/core/model.py +++ b/GPy/core/model.py @@ -477,7 +477,7 @@ class Model(Parameterized): if not hasattr(self, 'kern'): raise ValueError, "this Model has no kernel" - k = [p for p in self.kern.parts if p.name in ['rbf', 'linear','rbf_inv']] + k = [p for p in self.kern.parts if p.name in ['rbf', 'linear', 'rbf_inv']] if (not len(k) == 1) or (not k[0].ARD): raise ValueError, "cannot determine sensitivity for this kernel" k = k[0] diff --git a/GPy/examples/dimensionality_reduction.py b/GPy/examples/dimensionality_reduction.py index 85528b72..020669ce 100644 --- a/GPy/examples/dimensionality_reduction.py +++ b/GPy/examples/dimensionality_reduction.py @@ -12,19 +12,20 @@ from GPy.likelihoods.gaussian import Gaussian default_seed = np.random.seed(123344) def BGPLVM(seed=default_seed): - N = 10 - num_inducing = 3 - Q = 5 - D = 10 + N = 5 + num_inducing = 4 + Q = 3 + D = 2 # generate GPLVM-like data X = np.random.rand(N, Q) lengthscales = np.random.rand(Q) - k = GPy.kern.rbf(Q, .5, lengthscales, ARD=True) + GPy.kern.white(Q, 0.01) + k = (GPy.kern.rbf(Q, .5, lengthscales, ARD=True) + + GPy.kern.white(Q, 0.01)) K = k.K(X) - Y = np.random.multivariate_normal(np.zeros(N), K, Q).T + Y = np.random.multivariate_normal(np.zeros(N), K, D).T lik = Gaussian(Y, normalize=True) - k = GPy.kern.rbf(Q, ARD=True) + GPy.kern.bias(Q) + GPy.kern.white(Q) + k = GPy.kern.rbf_inv(Q, .5, np.ones(Q) * 2., ARD=True) + GPy.kern.bias(Q) + GPy.kern.white(Q) # k = GPy.kern.rbf(Q) + GPy.kern.bias(Q) + GPy.kern.white(Q, 0.00001) # k = GPy.kern.rbf(Q, ARD = False) + GPy.kern.white(Q, 0.00001) @@ -298,17 +299,19 @@ def mrd_simulation(optimize=True, plot=True, plot_sim=True, **kw): D1, D2, D3, N, num_inducing, Q = 150, 200, 400, 500, 3, 7 slist, Slist, Ylist = _simulate_sincos(D1, D2, D3, N, num_inducing, Q, plot_sim) + likelihood_list = [Gaussian(x, normalize=True) for x in Ylist] + 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)) - m = mrd.MRD(Ylist, input_dim=Q, num_inducing=num_inducing, kernels=k, initx="", initz='permute', **kw) + m = mrd.MRD(likelihood_list, input_dim=Q, num_inducing=num_inducing, kernels=k, initx="", initz='permute', **kw) m.ensure_default_constraints() - for i, Y in enumerate(Ylist): - m['{}_noise'.format(i)] = Y.var() / 100. + for i, bgplvm in enumerate(m.bgplvms): + m['{}_noise'.format(i)] = bgplvm.likelihood.Y.var() / 500. # DEBUG diff --git a/GPy/testing/psi_stat_expactation_tests.py b/GPy/testing/psi_stat_expectation_tests.py similarity index 100% rename from GPy/testing/psi_stat_expactation_tests.py rename to GPy/testing/psi_stat_expectation_tests.py From 7d96266714a9d356f1966f24d590c6e9923ce447 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Mon, 29 Jul 2013 15:33:04 +0100 Subject: [PATCH 083/135] added imshow controller and label controller --- .../controllers/__init__.py | 0 .../controllers/axis_event_controller.py | 142 ++++++++++++++++++ .../controllers/imshow_controller.py | 71 +++++++++ 3 files changed, 213 insertions(+) create mode 100644 GPy/util/latent_space_visualizations/controllers/__init__.py create mode 100644 GPy/util/latent_space_visualizations/controllers/axis_event_controller.py create mode 100644 GPy/util/latent_space_visualizations/controllers/imshow_controller.py diff --git a/GPy/util/latent_space_visualizations/controllers/__init__.py b/GPy/util/latent_space_visualizations/controllers/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/GPy/util/latent_space_visualizations/controllers/axis_event_controller.py b/GPy/util/latent_space_visualizations/controllers/axis_event_controller.py new file mode 100644 index 00000000..acb1ac8d --- /dev/null +++ b/GPy/util/latent_space_visualizations/controllers/axis_event_controller.py @@ -0,0 +1,142 @@ +''' +Created on 24 Jul 2013 + +@author: maxz +''' +import numpy + +class AxisEventController(object): + def __init__(self, ax): + self.ax = ax + self.activate() + def deactivate(self): + for cb_class in self.ax.callbacks.callbacks.values(): + for cb_num in cb_class.keys(): + self.ax.callbacks.disconnect(cb_num) + def activate(self): + self.ax.callbacks.connect('xlim_changed', self.xlim_changed) + self.ax.callbacks.connect('ylim_changed', self.ylim_changed) + def xlim_changed(self, ax): + pass + def ylim_changed(self, ax): + pass + + +class AxisChangedController(AxisEventController): + ''' + Buffered control of axis limit changes + ''' + _changing = False + + def __init__(self, ax, update_lim=None): + ''' + Constructor + ''' + super(AxisChangedController, self).__init__(ax) + self._lim_ratio_threshold = update_lim or .8 + self._x_lim = self.ax.get_xlim() + self._y_lim = self.ax.get_ylim() + + def update(self, ax): + pass + + def xlim_changed(self, ax): + super(AxisChangedController, self).xlim_changed(ax) + if not self._changing and self.lim_changed(ax.get_xlim(), self._x_lim): + self._changing = True + self._x_lim = ax.get_xlim() + self.update(ax) + self._changing = False + + def ylim_changed(self, ax): + super(AxisChangedController, self).ylim_changed(ax) + if not self._changing and self.lim_changed(ax.get_ylim(), self._y_lim): + self._changing = True + self._y_lim = ax.get_ylim() + self.update(ax) + self._changing = False + + def extent(self, lim): + return numpy.subtract(*lim) + + def lim_changed(self, axlim, savedlim): + axextent = self.extent(axlim) + extent = self.extent(savedlim) + lim_changed = ((axextent / extent) < self._lim_ratio_threshold ** 2 + or (extent / axextent) < self._lim_ratio_threshold ** 2 + or ((1 - (self.extent((axlim[0], savedlim[0])) / self.extent((savedlim[0], axlim[1])))) + < self._lim_ratio_threshold) + or ((1 - (self.extent((savedlim[0], axlim[0])) / self.extent((axlim[0], savedlim[1])))) + < self._lim_ratio_threshold) + ) + return lim_changed + + def _buffer_lim(self, lim): + # buffer_size = 1 - self._lim_ratio_threshold + # extent = self.extent(lim) + return lim + + +class BufferedAxisChangedController(AxisChangedController): + def __init__(self, ax, plot_function, plot_limits, resolution=50, update_lim=None, **kwargs): + """ + :param plot_function: + function to use for creating image for plotting (return ndarray-like) + plot_function gets called with (2D!) Xtest grid if replotting required + :type plot_function: function + :param plot_limits: + beginning plot limits [xmin, ymin, xmax, ymax] + + :param kwargs: additional kwargs are for pyplot.imshow(**kwargs) + """ + super(BufferedAxisChangedController, self).__init__(ax, update_lim=update_lim) + self.plot_function = plot_function + xmin, xmax = self._x_lim # self._compute_buffered(*self._x_lim) + ymin, ymax = self._y_lim # self._compute_buffered(*self._y_lim) + self.resolution = resolution + self._not_init = False + self.view = self._init_view(self.ax, self.recompute_X(), xmin, xmax, ymin, ymax, **kwargs) + self._not_init = True + + def update(self, ax): + super(BufferedAxisChangedController, self).update(ax) + if self._not_init: + xmin, xmax = self._compute_buffered(*self._x_lim) + ymin, ymax = self._compute_buffered(*self._y_lim) + self.update_view(self.view, self.recompute_X(), xmin, xmax, ymin, ymax) + + def _init_view(self, ax, X, xmin, xmax, ymin, ymax): + raise NotImplementedError('return view for this controller') + + def update_view(self, view, X, xmin, xmax, ymin, ymax): + raise NotImplementedError('update view given in here') + + def get_grid(self): + xmin, xmax = self._compute_buffered(*self._x_lim) + ymin, ymax = self._compute_buffered(*self._y_lim) + x, y = numpy.mgrid[xmin:xmax:1j * self.resolution, ymin:ymax:1j * self.resolution] + return numpy.hstack((x.flatten()[:, None], y.flatten()[:, None])) + + def recompute_X(self): + X = self.plot_function(self.get_grid()) + if isinstance(X, (tuple, list)): + for x in X: + x.shape = [self.resolution, self.resolution] + x[:, :] = x.T[::-1, :] + return X + return X.reshape(self.resolution, self.resolution).T[::-1, :] + + def _compute_buffered(self, mi, ma): + buffersize = self._buffersize() + size = ma - mi + return mi - (buffersize * size), ma + (buffersize * size) + + def _buffersize(self): + try: + buffersize = 1. - self._lim_ratio_threshold + except: + buffersize = .4 + return buffersize + + + diff --git a/GPy/util/latent_space_visualizations/controllers/imshow_controller.py b/GPy/util/latent_space_visualizations/controllers/imshow_controller.py new file mode 100644 index 00000000..fa6682e9 --- /dev/null +++ b/GPy/util/latent_space_visualizations/controllers/imshow_controller.py @@ -0,0 +1,71 @@ +''' +Created on 24 Jul 2013 + +@author: maxz +''' +from GPy.util.latent_space_visualizations.controllers.axis_event_controller import BufferedAxisChangedController +import itertools +import numpy + + +class ImshowController(BufferedAxisChangedController): + def __init__(self, ax, plot_function, plot_limits, resolution=50, update_lim=.5, **kwargs): + """ + :param plot_function: + function to use for creating image for plotting (return ndarray-like) + plot_function gets called with (2D!) Xtest grid if replotting required + :type plot_function: function + :param plot_limits: + beginning plot limits [xmin, ymin, xmax, ymax] + + :param kwargs: additional kwargs are for pyplot.imshow(**kwargs) + """ + super(ImshowController, self).__init__(ax, plot_function, plot_limits, resolution, update_lim, **kwargs) + + def _init_view(self, ax, X, xmin, xmax, ymin, ymax, **kwargs): + return ax.imshow(X, extent=(xmin, xmax, + ymin, ymax), + vmin=X.min(), + vmax=X.max(), + **kwargs) + + def update_view(self, view, X, xmin, xmax, ymin, ymax): + view.set_data(X) + view.set_extent((xmin, xmax, ymin, ymax)) + +class ImAnnotateController(ImshowController): + def __init__(self, ax, plot_function, plot_limits, resolution=20, update_lim=.99, **kwargs): + """ + :param plot_function: + function to use for creating image for plotting (return ndarray-like) + plot_function gets called with (2D!) Xtest grid if replotting required + :type plot_function: function + :param plot_limits: + beginning plot limits [xmin, ymin, xmax, ymax] + :param text_props: kwargs for pyplot.text(**text_props) + :param kwargs: additional kwargs are for pyplot.imshow(**kwargs) + """ + super(ImAnnotateController, self).__init__(ax, plot_function, plot_limits, resolution, update_lim, **kwargs) + + def _init_view(self, ax, X, xmin, xmax, ymin, ymax, text_props={}, **kwargs): + view = [super(ImAnnotateController, self)._init_view(ax, X[0], xmin, xmax, ymin, ymax, **kwargs)] + xoffset, yoffset = self._offsets(xmin, xmax, ymin, ymax) + xlin = numpy.linspace(xmin, xmax, self.resolution, endpoint=False) + ylin = numpy.linspace(ymin, ymax, self.resolution, endpoint=False) + for [i, x], [j, y] in itertools.product(enumerate(xlin), enumerate(ylin[::-1])): + view.append(ax.text(x + xoffset, y + yoffset, "{}".format(X[1][j, i]), ha='center', va='center', **text_props)) + return view + + def update_view(self, view, X, xmin, xmax, ymin, ymax): + super(ImAnnotateController, self).update_view(view[0], X[0], xmin, xmax, ymin, ymax) + xoffset, yoffset = self._offsets(xmin, xmax, ymin, ymax) + xlin = numpy.linspace(xmin, xmax, self.resolution, endpoint=False) + ylin = numpy.linspace(ymin, ymax, self.resolution, endpoint=False) + for [[i, x], [j, y]], text in itertools.izip(itertools.product(enumerate(xlin), enumerate(ylin[::-1])), view[1:]): + text.set_x(x + xoffset) + text.set_y(y + yoffset) + text.set_text("{}".format(X[1][j, i])) + return view + + def _offsets(self, xmin, xmax, ymin, ymax): + return (xmax - xmin) / (2 * self.resolution), (ymax - ymin) / (2 * self.resolution) From 4f2dfb5e5765f0b2a8531eed9c5411024d0f0cee Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Mon, 29 Jul 2013 15:35:15 +0100 Subject: [PATCH 084/135] import handling... --- GPy/util/__init__.py | 2 +- GPy/util/latent_space_visualizations/controllers/__init__.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/GPy/util/__init__.py b/GPy/util/__init__.py index 27d25518..99548268 100644 --- a/GPy/util/__init__.py +++ b/GPy/util/__init__.py @@ -7,10 +7,10 @@ import misc import plot import squashers import Tango -import misc import warping_functions import datasets import mocap import visualize import decorators import classification +import latent_space_visualizations diff --git a/GPy/util/latent_space_visualizations/controllers/__init__.py b/GPy/util/latent_space_visualizations/controllers/__init__.py index e69de29b..25f6535e 100644 --- a/GPy/util/latent_space_visualizations/controllers/__init__.py +++ b/GPy/util/latent_space_visualizations/controllers/__init__.py @@ -0,0 +1 @@ +import axis_event_controller, imshow_controller From 504ffd0cf9a7bd48ef9317a93c803300ee1cc405 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Mon, 29 Jul 2013 15:36:59 +0100 Subject: [PATCH 085/135] import handling... --- GPy/util/latent_space_visualizations/__init__.py | 1 + 1 file changed, 1 insertion(+) create mode 100644 GPy/util/latent_space_visualizations/__init__.py diff --git a/GPy/util/latent_space_visualizations/__init__.py b/GPy/util/latent_space_visualizations/__init__.py new file mode 100644 index 00000000..ee595945 --- /dev/null +++ b/GPy/util/latent_space_visualizations/__init__.py @@ -0,0 +1 @@ +import controllers From b9c9f5ac832b4ba441b60f156947fe6de86fd054 Mon Sep 17 00:00:00 2001 From: James Hensman Date: Tue, 30 Jul 2013 10:17:40 +0100 Subject: [PATCH 086/135] some profilng and debugging in sparse_GP --- GPy/core/sparse_gp.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/GPy/core/sparse_gp.py b/GPy/core/sparse_gp.py index a6478850..e2462a80 100644 --- a/GPy/core/sparse_gp.py +++ b/GPy/core/sparse_gp.py @@ -90,9 +90,12 @@ class SparseGP(GPBase): if self.likelihood.is_heteroscedastic: psi2_beta = (self.psi2 * (self.likelihood.precision.flatten().reshape(self.num_data, 1, 1))).sum(0) else: - psi2_beta = self.psi2.sum(0) * self.likelihood.precision + #psi2_beta = self.psi2.sum(0) * self.likelihood.precision + psi2_beta = self.psi2[0] * (self.num_data * self.likelihood.precision) evals, evecs = linalg.eigh(psi2_beta) - clipped_evals = np.clip(evals, 0., 1e6) # TODO: make clipping configurable + clipped_evals = np.clip(evals, 0., 1e16) # TODO: make clipping configurable + if not np.array_equal(evals, clipped_evals): + pass#print evals tmp = evecs * np.sqrt(clipped_evals) tmp = tmp.T else: @@ -114,7 +117,8 @@ class SparseGP(GPBase): # back substutue C into psi1Vf tmp, info1 = dtrtrs(self.Lm, np.asfortranarray(self.psi1Vf), lower=1, trans=0) self._LBi_Lmi_psi1Vf, _ = dtrtrs(self.LB, np.asfortranarray(tmp), lower=1, trans=0) - tmp, info2 = dpotrs(self.LB, tmp, lower=1) + #tmp, info2 = dpotrs(self.LB, tmp, lower=1) + tmp, info2 = dtrtrs(self.LB, self._LBi_Lmi_psi1Vf, lower=1, trans=1) self.Cpsi1Vf, info3 = dtrtrs(self.Lm, tmp, lower=1, trans=1) # Compute dL_dKmm From 632dda8397e9f3d00f2b1ddec32de02f108d2ac5 Mon Sep 17 00:00:00 2001 From: James Hensman Date: Tue, 30 Jul 2013 11:43:07 +0100 Subject: [PATCH 087/135] oops, that was silly bug. Don't code tired, kids. problem summing psi2 in sparse_GP --- GPy/core/sparse_gp.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/GPy/core/sparse_gp.py b/GPy/core/sparse_gp.py index e2462a80..2efc2403 100644 --- a/GPy/core/sparse_gp.py +++ b/GPy/core/sparse_gp.py @@ -80,8 +80,6 @@ class SparseGP(GPBase): self.psi2 = None def _computations(self): - - # factor Kmm self.Lm = jitchol(self.Kmm) @@ -90,10 +88,9 @@ class SparseGP(GPBase): if self.likelihood.is_heteroscedastic: psi2_beta = (self.psi2 * (self.likelihood.precision.flatten().reshape(self.num_data, 1, 1))).sum(0) else: - #psi2_beta = self.psi2.sum(0) * self.likelihood.precision - psi2_beta = self.psi2[0] * (self.num_data * self.likelihood.precision) + psi2_beta = self.psi2.sum(0) * self.likelihood.precision evals, evecs = linalg.eigh(psi2_beta) - clipped_evals = np.clip(evals, 0., 1e16) # TODO: make clipping configurable + clipped_evals = np.clip(evals, 0., 1e6) # TODO: make clipping configurable if not np.array_equal(evals, clipped_evals): pass#print evals tmp = evecs * np.sqrt(clipped_evals) From dc637e30cb60dd38380198baaf73b85ecdb7f62c Mon Sep 17 00:00:00 2001 From: Alessandra Tosi Date: Tue, 30 Jul 2013 15:58:18 +0100 Subject: [PATCH 088/135] added jacobian and magnification factor --- GPy/models/gplvm.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/GPy/models/gplvm.py b/GPy/models/gplvm.py index d106cd4f..60e78461 100644 --- a/GPy/models/gplvm.py +++ b/GPy/models/gplvm.py @@ -63,6 +63,20 @@ class GPLVM(GP): return np.hstack((dL_dX.flatten(), GP._log_likelihood_gradients(self))) + def jacobian(self,X): + target = np.zeros((X.shape[0],X.shape[1],self.output_dim)) + for i in range(self.output_dim): + target[:,:,i]=self.kern.dK_dX(np.dot(self.Ki,self.likelihood.Y[:,i])[None, :],X,self.X) + return target + + def magnification(self,X): + target=np.zeros(X.shape[0]) + J = np.zeros((X.shape[0],X.shape[1],self.output_dim)) + J=self.jacobian(X) + for i in range(X.shape[0]): + target[i]=np.sqrt(pb.det(np.dot(J[i,:,:],np.transpose(J[i,:,:])))) + return target + def plot(self): assert self.likelihood.Y.shape[1] == 2 pb.scatter(self.likelihood.Y[:, 0], self.likelihood.Y[:, 1], 40, self.X[:, 0].copy(), linewidth=0, cmap=pb.cm.jet) @@ -72,3 +86,6 @@ class GPLVM(GP): def plot_latent(self, *args, **kwargs): return util.plot_latent.plot_latent(self, *args, **kwargs) + + def plot_magnification(self, *args, **kwargs): + return util.plot_latent.plot_magnification(self, *args, **kwargs) From 42af4d737fef700d7d533e5607b4208f45ad251d Mon Sep 17 00:00:00 2001 From: Alessandra Tosi Date: Tue, 30 Jul 2013 15:58:59 +0100 Subject: [PATCH 089/135] added plot of magnification factor --- GPy/util/plot_latent.py | 76 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/GPy/util/plot_latent.py b/GPy/util/plot_latent.py index 4a19ea5b..723c8ac3 100644 --- a/GPy/util/plot_latent.py +++ b/GPy/util/plot_latent.py @@ -97,3 +97,79 @@ def plot_latent(model, labels=None, which_indices=None, ax.figure.canvas.show() raw_input('Enter to continue') return ax + +def plot_magnification(model, labels=None, which_indices=None, + resolution=60, ax=None, marker='o', s=40, + fignum=None, plot_inducing=False, legend=True, + aspect='auto', updates=False): + """ + :param labels: a np.array of size model.num_data containing labels for the points (can be number, strings, etc) + :param resolution: the resolution of the grid on which to evaluate the predictive variance + """ + if ax is None: + fig = pb.figure(num=fignum) + ax = fig.add_subplot(111) + util.plot.Tango.reset() + + if labels is None: + labels = np.ones(model.num_data) + + input_1, input_2 = most_significant_input_dimensions(model, which_indices) + + # first, plot the output variance as a function of the latent space + Xtest, xx, yy, xmin, xmax = util.plot.x_frame2D(model.X[:, [input_1, input_2]], resolution=resolution) + Xtest_full = np.zeros((Xtest.shape[0], model.X.shape[1])) + def plot_function(x): + Xtest_full[:, [input_1, input_2]] = x + mf=model.magnification(Xtest_full) + return mf + view = ImshowController(ax, plot_function, tuple(xmin) + tuple(xmax), + resolution, aspect=aspect, interpolation='bilinear', + cmap=pb.cm.gray) + + # make sure labels are in order of input: + ulabels = [] + for lab in labels: + if not lab in ulabels: + ulabels.append(lab) + + marker = itertools.cycle(list(marker)) + + for i, ul in enumerate(ulabels): + if type(ul) is np.string_: + this_label = ul + elif type(ul) is np.int64: + this_label = 'class %i' % ul + else: + this_label = 'class %i' % i + m = marker.next() + + index = np.nonzero(labels == ul)[0] + if model.input_dim == 1: + x = model.X[index, input_1] + y = np.zeros(index.size) + else: + x = model.X[index, input_1] + y = model.X[index, input_2] + ax.scatter(x, y, marker=m, s=s, color=util.plot.Tango.nextMedium(), label=this_label) + + ax.set_xlabel('latent dimension %i' % input_1) + ax.set_ylabel('latent dimension %i' % input_2) + + if not np.all(labels == 1.) and legend: + ax.legend(loc=0, numpoints=1) + + ax.set_xlim(xmin[0], xmax[0]) + ax.set_ylim(xmin[1], xmax[1]) + ax.grid(b=False) # remove the grid if present, it doesn't look good + ax.set_aspect('auto') # set a nice aspect ratio + + if plot_inducing: + ax.plot(model.Z[:, input_1], model.Z[:, input_2], '^w') + + if updates: + ax.figure.canvas.show() + raw_input('Enter to continue') + + pb.title('Magnification Factor') + return ax From dd75890f33ce5246ab9db3b0838b8ccf21b93a1c Mon Sep 17 00:00:00 2001 From: Andreas Date: Tue, 30 Jul 2013 17:54:22 +0100 Subject: [PATCH 090/135] Implemented smart pickling for svigp --- GPy/core/svigp.py | 52 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/GPy/core/svigp.py b/GPy/core/svigp.py index 7d2bec36..8a2d889d 100644 --- a/GPy/core/svigp.py +++ b/GPy/core/svigp.py @@ -92,12 +92,56 @@ class SVIGP(GPBase): self._vb_steplength_trace = [] def getstate(self): - return GPBase.getstate(self) - + steplength_params = [self.hbar_t, self.tau_t, self.gbar_t, self.gbar_t1, self.gbar_t2, self.hbar_tp, self.tau_tp, self.gbar_tp, self.adapt_param_steplength, self.adapt_vb_steplength, self.vb_steplength, self.param_steplength] + return GPBase.getstate(self) + \ + [self.get_vb_param(), + self.Z, + self.num_inducing, + self.has_uncertain_inputs, + self.X_variance, + self.X_batch, + self.X_variance_batch, + steplength_params, + self.batchcounter, + self.batchsize, + self.epochs, + self.momentum, + self.data_prop, + self._param_trace, + self._param_steplength_trace, + self._vb_steplength_trace, + self._ll_trace, + self._grad_trace, + self.Y, + self._permutation, + self.iterations + ] def setstate(self, state): - return GPBase.setstate(self, state) - + self.iterations = state.pop() + self._permutation = state.pop() + self.Y = state.pop() + self._grad_trace = state.pop() + self._ll_trace = state.pop() + self._vb_steplength_trace = state.pop() + self._param_steplength_trace = state.pop() + self._param_trace = state.pop() + self.data_prop = state.pop() + self.momentum = state.pop() + self.epochs = state.pop() + self.batchsize = state.pop() + self.batchcounter = state.pop() + steplength_params = state.pop() + (self.hbar_t, self.tau_t, self.gbar_t, self.gbar_t1, self.gbar_t2, self.hbar_tp, self.tau_tp, self.gbar_tp, self.adapt_param_steplength, self.adapt_vb_steplength, self.vb_steplength, self.param_steplength) = steplength_params + self.X_variance_batch = state.pop() + self.X_batch = state.pop() + self.X_variance = state.pop() + self.has_uncertain_inputs = state.pop() + self.num_inducing = state.pop() + self.Z = state.pop() + vb_param = state.pop() + GPBase.setstate(self, state) + self.set_vb_param(vb_param) def _compute_kernel_matrices(self): # kernel computations, using BGPLVM notation From 391f13c4724aa6c06c71bd138524a8d19e23b8f9 Mon Sep 17 00:00:00 2001 From: Neil Lawrence Date: Fri, 2 Aug 2013 12:14:29 +0100 Subject: [PATCH 091/135] Added connections.txt --- GPy/util/datasets/connections.txt | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 GPy/util/datasets/connections.txt diff --git a/GPy/util/datasets/connections.txt b/GPy/util/datasets/connections.txt new file mode 100644 index 00000000..e1886100 --- /dev/null +++ b/GPy/util/datasets/connections.txt @@ -0,0 +1,22 @@ +LFHD, RFHD +RFHD, RBHD +RBHD, LBHD +LBHD, LFHD +LELB, LWRB +LWRB, LFIN +LELB, LSHO +LSHO, RSHO +RSHO, STRN +LSHO, STRN +RSHO, RELB +RELB, RWRB +RWRB, RFIN +LSHO, LFWT +RSHO, RFWT +LFWT, RFWT +LFWT, LKNE +RFWT, RKNE +LKNE, LHEE +RKNE, RHEE +RMT5, RHEE +LMT5, LHEE From ede5654e3cfadd3d48f988d3ccf758b091280f9f Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Fri, 2 Aug 2013 12:18:43 +0100 Subject: [PATCH 092/135] input_sensitivity right way --- GPy/core/model.py | 6 +++--- GPy/util/plot_latent.py | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/GPy/core/model.py b/GPy/core/model.py index c7996153..635c06e6 100644 --- a/GPy/core/model.py +++ b/GPy/core/model.py @@ -483,11 +483,11 @@ class Model(Parameterized): k = k[0] if k.name == 'rbf': - return k.lengthscale + return 1. / k.lengthscale elif k.name == 'rbf_inv': - return 1. / k.inv_lengthscale + return k.inv_lengthscale elif k.name == 'linear': - return 1. / k.variances + return k.variances def pseudo_EM(self, epsilon=.1, **kwargs): diff --git a/GPy/util/plot_latent.py b/GPy/util/plot_latent.py index 4a19ea5b..a5f81be4 100644 --- a/GPy/util/plot_latent.py +++ b/GPy/util/plot_latent.py @@ -13,7 +13,7 @@ def most_significant_input_dimensions(model, which_indices): input_1, input_2 = 0, 1 else: try: - input_1, input_2 = np.argsort(model.input_sensitivity())[:2] + input_1, input_2 = np.argsort(model.input_sensitivity())[::-1][:2] except: raise ValueError, "cannot Atomatically determine which dimensions to plot, please pass 'which_indices'" else: @@ -41,6 +41,7 @@ def plot_latent(model, labels=None, which_indices=None, # first, plot the output variance as a function of the latent space Xtest, xx, yy, xmin, xmax = util.plot.x_frame2D(model.X[:, [input_1, input_2]], resolution=resolution) Xtest_full = np.zeros((Xtest.shape[0], model.X.shape[1])) + def plot_function(x): Xtest_full[:, [input_1, input_2]] = x mu, var, low, up = model.predict(Xtest_full) From 5570e82943d70be03ea18b34a650590884cca02e Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Fri, 2 Aug 2013 16:36:51 +0100 Subject: [PATCH 093/135] constant jitter to Kmm, deleted some white kernels in models and examples --- GPy/core/sparse_gp.py | 11 +- GPy/examples/dimensionality_reduction.py | 24 +- GPy/examples/regression.py | 285 +++++++++++------------ GPy/models/bayesian_gplvm.py | 4 +- GPy/models/sparse_gp_regression.py | 2 +- 5 files changed, 165 insertions(+), 161 deletions(-) diff --git a/GPy/core/sparse_gp.py b/GPy/core/sparse_gp.py index 2efc2403..62c9c4fd 100644 --- a/GPy/core/sparse_gp.py +++ b/GPy/core/sparse_gp.py @@ -49,6 +49,8 @@ class SparseGP(GPBase): # normalize X uncertainty also if self.has_uncertain_inputs: self.X_variance /= np.square(self._Xscale) + + self._const_jitter = None def getstate(self): """ @@ -81,7 +83,10 @@ class SparseGP(GPBase): def _computations(self): # factor Kmm - self.Lm = jitchol(self.Kmm) + if self._const_jitter is None or not(self._const_jitter.shape[0] == self.num_inducing): + self._const_jitter = np.eye(self.num_inducing) * 1e-7 + self.Lm = jitchol(self.Kmm + self._const_jitter) + # TODO: no white kernel needed anymore, all noise in likelihood -------- # The rather complex computations of self.A if self.has_uncertain_inputs: @@ -92,7 +97,7 @@ class SparseGP(GPBase): evals, evecs = linalg.eigh(psi2_beta) clipped_evals = np.clip(evals, 0., 1e6) # TODO: make clipping configurable if not np.array_equal(evals, clipped_evals): - pass#print evals + pass # print evals tmp = evecs * np.sqrt(clipped_evals) tmp = tmp.T else: @@ -114,7 +119,7 @@ class SparseGP(GPBase): # back substutue C into psi1Vf tmp, info1 = dtrtrs(self.Lm, np.asfortranarray(self.psi1Vf), lower=1, trans=0) self._LBi_Lmi_psi1Vf, _ = dtrtrs(self.LB, np.asfortranarray(tmp), lower=1, trans=0) - #tmp, info2 = dpotrs(self.LB, tmp, lower=1) + # tmp, info2 = dpotrs(self.LB, tmp, lower=1) tmp, info2 = dtrtrs(self.LB, self._LBi_Lmi_psi1Vf, lower=1, trans=1) self.Cpsi1Vf, info3 = dtrtrs(self.Lm, tmp, lower=1, trans=1) diff --git a/GPy/examples/dimensionality_reduction.py b/GPy/examples/dimensionality_reduction.py index 020669ce..276695e6 100644 --- a/GPy/examples/dimensionality_reduction.py +++ b/GPy/examples/dimensionality_reduction.py @@ -140,30 +140,32 @@ def swiss_roll(optimize=True, N=1000, num_inducing=15, Q=4, sigma=.2, plot=False m.optimize('scg', messages=1) return m -def BGPLVM_oil(optimize=True, N=200, Q=10, num_inducing=15, max_iters=150, plot=False, **k): +def BGPLVM_oil(optimize=True, N=200, Q=7, num_inducing=40, max_iters=1000, plot=False, **k): np.random.seed(0) data = GPy.util.datasets.oil() # create simple GP model - kernel = GPy.kern.rbf(Q, ARD=True) + GPy.kern.bias(Q, np.exp(-2)) + GPy.kern.white(Q, np.exp(-2)) + kernel = GPy.kern.rbf_inv(Q, 1., [.1] * Q, ARD=True) + GPy.kern.bias(Q, np.exp(-2)) Y = data['X'][:N] - Yn = Y - Y.mean(0) - Yn /= Yn.std(0) + Yn = Gaussian(Y, normalize=True) +# Yn = Y - Y.mean(0) +# Yn /= Yn.std(0) m = GPy.models.BayesianGPLVM(Yn, Q, kernel=kernel, num_inducing=num_inducing, **k) m.data_labels = data['Y'][:N].argmax(axis=1) # m.constrain('variance|leng', logexp_clipped()) # m['.*lengt'] = m.X.var(0).max() / m.X.var(0) - m['noise'] = Yn.var() / 100. + m['noise'] = Yn.Y.var() / 100. # optimize if optimize: -# m.constrain_fixed('noise') -# m.optimize('scg', messages=1, max_iters=200, gtol=.05) -# m.constrain_positive('noise') + m.constrain_fixed('noise') + m.optimize('scg', messages=1, max_iters=200, gtol=.05) + m.constrain_positive('noise') + m.constrain_bounded('white', 1e-7, 1) m.optimize('scg', messages=1, max_iters=max_iters, gtol=.05) if plot: @@ -271,7 +273,7 @@ def bgplvm_simulation(optimize='scg', max_iters=2e4, plot_sim=False): # from GPy.core.transformations import logexp_clipped - D1, D2, D3, N, num_inducing, Q = 15, 5, 8, 300, 30, 6 + D1, D2, D3, N, num_inducing, Q = 15, 5, 8, 30, 3, 10 slist, Slist, Ylist = _simulate_sincos(D1, D2, D3, N, num_inducing, Q, plot_sim) from GPy.models import mrd @@ -296,7 +298,7 @@ def bgplvm_simulation(optimize='scg', return m def mrd_simulation(optimize=True, plot=True, plot_sim=True, **kw): - D1, D2, D3, N, num_inducing, Q = 150, 200, 400, 500, 3, 7 + D1, D2, D3, N, num_inducing, Q = 30, 10, 15, 60, 3, 10 slist, Slist, Ylist = _simulate_sincos(D1, D2, D3, N, num_inducing, Q, plot_sim) likelihood_list = [Gaussian(x, normalize=True) for x in Ylist] @@ -383,7 +385,7 @@ def stick_bgplvm(model=None): m = BayesianGPLVM(data['Y'], Q, init="PCA", num_inducing=20, kernel=kernel) # optimize m.ensure_default_constraints() - m.optimize(messages=1, max_iters=3000, xtol=1e-300, ftol=1e-300) + m.optimize('scg', messages=1, max_iters=200, xtol=1e-300, ftol=1e-300) m._set_params(m._get_params()) plt.clf, (latent_axes, sense_axes) = plt.subplots(1, 2) plt.sca(latent_axes) diff --git a/GPy/examples/regression.py b/GPy/examples/regression.py index 0363f372..0776426f 100644 --- a/GPy/examples/regression.py +++ b/GPy/examples/regression.py @@ -15,7 +15,7 @@ def toy_rbf_1d(optimizer='tnc', max_nb_eval_optim=100): data = GPy.util.datasets.toy_rbf_1d() # create simple GP Model - m = GPy.models.GPRegression(data['X'],data['Y']) + m = GPy.models.GPRegression(data['X'], data['Y']) # optimize m.optimize(optimizer, max_f_eval=max_nb_eval_optim) @@ -29,16 +29,16 @@ def rogers_girolami_olympics(optim_iters=100): data = GPy.util.datasets.rogers_girolami_olympics() # create simple GP Model - m = GPy.models.GPRegression(data['X'],data['Y']) + m = GPy.models.GPRegression(data['X'], data['Y']) - #set the lengthscale to be something sensible (defaults to 1) + # set the lengthscale to be something sensible (defaults to 1) m['rbf_lengthscale'] = 10 # optimize m.optimize(max_f_eval=optim_iters) # plot - m.plot(plot_limits = (1850, 2050)) + m.plot(plot_limits=(1850, 2050)) print(m) return m @@ -47,7 +47,7 @@ def toy_rbf_1d_50(optim_iters=100): data = GPy.util.datasets.toy_rbf_1d_50() # create simple GP Model - m = GPy.models.GPRegression(data['X'],data['Y']) + m = GPy.models.GPRegression(data['X'], data['Y']) # optimize m.optimize(max_f_eval=optim_iters) @@ -61,33 +61,33 @@ def toy_ARD(optim_iters=1000, kernel_type='linear', N=300, D=4): # Create an artificial dataset where the values in the targets (Y) # only depend in dimensions 1 and 3 of the inputs (X). Run ARD to # see if this dependency can be recovered - X1 = np.sin(np.sort(np.random.rand(N,1)*10,0)) - X2 = np.cos(np.sort(np.random.rand(N,1)*10,0)) - X3 = np.exp(np.sort(np.random.rand(N,1),0)) - X4 = np.log(np.sort(np.random.rand(N,1),0)) + X1 = np.sin(np.sort(np.random.rand(N, 1) * 10, 0)) + X2 = np.cos(np.sort(np.random.rand(N, 1) * 10, 0)) + X3 = np.exp(np.sort(np.random.rand(N, 1), 0)) + X4 = np.log(np.sort(np.random.rand(N, 1), 0)) X = np.hstack((X1, X2, X3, X4)) - Y1 = np.asarray(2*X[:,0]+3).reshape(-1,1) - Y2 = np.asarray(4*(X[:,2]-1.5*X[:,0])).reshape(-1,1) + Y1 = np.asarray(2 * X[:, 0] + 3).reshape(-1, 1) + Y2 = np.asarray(4 * (X[:, 2] - 1.5 * X[:, 0])).reshape(-1, 1) Y = np.hstack((Y1, Y2)) - Y = np.dot(Y, np.random.rand(2,D)); - Y = Y + 0.2*np.random.randn(Y.shape[0], Y.shape[1]) + Y = np.dot(Y, np.random.rand(2, D)); + Y = Y + 0.2 * np.random.randn(Y.shape[0], Y.shape[1]) Y -= Y.mean() Y /= Y.std() if kernel_type == 'linear': - kernel = GPy.kern.linear(X.shape[1], ARD = 1) + kernel = GPy.kern.linear(X.shape[1], ARD=1) elif kernel_type == 'rbf_inv': - kernel = GPy.kern.rbf_inv(X.shape[1], ARD = 1) + kernel = GPy.kern.rbf_inv(X.shape[1], ARD=1) else: - kernel = GPy.kern.rbf(X.shape[1], ARD = 1) + kernel = GPy.kern.rbf(X.shape[1], ARD=1) kernel += GPy.kern.white(X.shape[1]) + GPy.kern.bias(X.shape[1]) m = GPy.models.GPRegression(X, Y, kernel) - #len_prior = GPy.priors.inverse_gamma(1,18) # 1, 25 - #m.set_prior('.*lengthscale',len_prior) + # len_prior = GPy.priors.inverse_gamma(1,18) # 1, 25 + # m.set_prior('.*lengthscale',len_prior) - m.optimize(optimizer = 'scg', max_iters = optim_iters, messages = 1) + m.optimize(optimizer='scg', max_iters=optim_iters, messages=1) m.kern.plot_ARD() print(m) @@ -97,34 +97,34 @@ def toy_ARD_sparse(optim_iters=1000, kernel_type='linear', N=300, D=4): # Create an artificial dataset where the values in the targets (Y) # only depend in dimensions 1 and 3 of the inputs (X). Run ARD to # see if this dependency can be recovered - X1 = np.sin(np.sort(np.random.rand(N,1)*10,0)) - X2 = np.cos(np.sort(np.random.rand(N,1)*10,0)) - X3 = np.exp(np.sort(np.random.rand(N,1),0)) - X4 = np.log(np.sort(np.random.rand(N,1),0)) + X1 = np.sin(np.sort(np.random.rand(N, 1) * 10, 0)) + X2 = np.cos(np.sort(np.random.rand(N, 1) * 10, 0)) + X3 = np.exp(np.sort(np.random.rand(N, 1), 0)) + X4 = np.log(np.sort(np.random.rand(N, 1), 0)) X = np.hstack((X1, X2, X3, X4)) - Y1 = np.asarray(2*X[:,0]+3)[:,None] - Y2 = np.asarray(4*(X[:,2]-1.5*X[:,0]))[:,None] + Y1 = np.asarray(2 * X[:, 0] + 3)[:, None] + Y2 = np.asarray(4 * (X[:, 2] - 1.5 * X[:, 0]))[:, None] Y = np.hstack((Y1, Y2)) - Y = np.dot(Y, np.random.rand(2,D)); - Y = Y + 0.2*np.random.randn(Y.shape[0], Y.shape[1]) + Y = np.dot(Y, np.random.rand(2, D)); + Y = Y + 0.2 * np.random.randn(Y.shape[0], Y.shape[1]) Y -= Y.mean() Y /= Y.std() if kernel_type == 'linear': - kernel = GPy.kern.linear(X.shape[1], ARD = 1) + kernel = GPy.kern.linear(X.shape[1], ARD=1) elif kernel_type == 'rbf_inv': - kernel = GPy.kern.rbf_inv(X.shape[1], ARD = 1) + kernel = GPy.kern.rbf_inv(X.shape[1], ARD=1) else: - kernel = GPy.kern.rbf(X.shape[1], ARD = 1) - kernel += GPy.kern.white(X.shape[1]) + GPy.kern.bias(X.shape[1]) - X_variance = np.ones(X.shape)*0.5 - m = GPy.models.SparseGPRegression(X, Y, kernel, X_variance = X_variance) - #len_prior = GPy.priors.inverse_gamma(1,18) # 1, 25 - #m.set_prior('.*lengthscale',len_prior) + kernel = GPy.kern.rbf(X.shape[1], ARD=1) + kernel += GPy.kern.bias(X.shape[1]) + X_variance = np.ones(X.shape) * 0.5 + m = GPy.models.SparseGPRegression(X, Y, kernel, X_variance=X_variance) + # len_prior = GPy.priors.inverse_gamma(1,18) # 1, 25 + # m.set_prior('.*lengthscale',len_prior) - m.optimize(optimizer = 'scg', max_iters = optim_iters, messages = 1) + m.optimize(optimizer='scg', max_iters=optim_iters, messages=1) m.kern.plot_ARD() print(m) @@ -135,10 +135,10 @@ def silhouette(optim_iters=100): data = GPy.util.datasets.silhouette() # create simple GP Model - m = GPy.models.GPRegression(data['X'],data['Y']) + m = GPy.models.GPRegression(data['X'], data['Y']) # optimize - m.optimize(messages=True,max_f_eval=optim_iters) + m.optimize(messages=True, max_f_eval=optim_iters) print(m) return m @@ -147,62 +147,62 @@ def coregionalisation_toy2(optim_iters=100): """ A simple demonstration of coregionalisation on two sinusoidal functions. """ - X1 = np.random.rand(50,1)*8 - X2 = np.random.rand(30,1)*5 - index = np.vstack((np.zeros_like(X1),np.ones_like(X2))) - X = np.hstack((np.vstack((X1,X2)),index)) - Y1 = np.sin(X1) + np.random.randn(*X1.shape)*0.05 - Y2 = np.sin(X2) + np.random.randn(*X2.shape)*0.05 + 2. - Y = np.vstack((Y1,Y2)) + X1 = np.random.rand(50, 1) * 8 + X2 = np.random.rand(30, 1) * 5 + index = np.vstack((np.zeros_like(X1), np.ones_like(X2))) + X = np.hstack((np.vstack((X1, X2)), index)) + Y1 = np.sin(X1) + np.random.randn(*X1.shape) * 0.05 + Y2 = np.sin(X2) + np.random.randn(*X2.shape) * 0.05 + 2. + Y = np.vstack((Y1, Y2)) k1 = GPy.kern.rbf(1) + GPy.kern.bias(1) - k2 = GPy.kern.coregionalise(2,1) - k = k1.prod(k2,tensor=True) - m = GPy.models.GPRegression(X,Y,kernel=k) - m.constrain_fixed('.*rbf_var',1.) - #m.constrain_positive('.*kappa') - m.optimize('sim',messages=1,max_f_eval=optim_iters) + k2 = GPy.kern.coregionalise(2, 1) + k = k1.prod(k2, tensor=True) + m = GPy.models.GPRegression(X, Y, kernel=k) + m.constrain_fixed('.*rbf_var', 1.) + # m.constrain_positive('.*kappa') + m.optimize('sim', messages=1, max_f_eval=optim_iters) pb.figure() - Xtest1 = np.hstack((np.linspace(0,9,100)[:,None],np.zeros((100,1)))) - Xtest2 = np.hstack((np.linspace(0,9,100)[:,None],np.ones((100,1)))) - mean, var,low,up = m.predict(Xtest1) - GPy.util.plot.gpplot(Xtest1[:,0],mean,low,up) - mean, var,low,up = m.predict(Xtest2) - GPy.util.plot.gpplot(Xtest2[:,0],mean,low,up) - pb.plot(X1[:,0],Y1[:,0],'rx',mew=2) - pb.plot(X2[:,0],Y2[:,0],'gx',mew=2) + Xtest1 = np.hstack((np.linspace(0, 9, 100)[:, None], np.zeros((100, 1)))) + Xtest2 = np.hstack((np.linspace(0, 9, 100)[:, None], np.ones((100, 1)))) + mean, var, low, up = m.predict(Xtest1) + GPy.util.plot.gpplot(Xtest1[:, 0], mean, low, up) + mean, var, low, up = m.predict(Xtest2) + GPy.util.plot.gpplot(Xtest2[:, 0], mean, low, up) + pb.plot(X1[:, 0], Y1[:, 0], 'rx', mew=2) + pb.plot(X2[:, 0], Y2[:, 0], 'gx', mew=2) return m def coregionalisation_toy(optim_iters=100): """ A simple demonstration of coregionalisation on two sinusoidal functions. """ - X1 = np.random.rand(50,1)*8 - X2 = np.random.rand(30,1)*5 - index = np.vstack((np.zeros_like(X1),np.ones_like(X2))) - X = np.hstack((np.vstack((X1,X2)),index)) - Y1 = np.sin(X1) + np.random.randn(*X1.shape)*0.05 - Y2 = -np.sin(X2) + np.random.randn(*X2.shape)*0.05 - Y = np.vstack((Y1,Y2)) + X1 = np.random.rand(50, 1) * 8 + X2 = np.random.rand(30, 1) * 5 + index = np.vstack((np.zeros_like(X1), np.ones_like(X2))) + X = np.hstack((np.vstack((X1, X2)), index)) + Y1 = np.sin(X1) + np.random.randn(*X1.shape) * 0.05 + Y2 = -np.sin(X2) + np.random.randn(*X2.shape) * 0.05 + Y = np.vstack((Y1, Y2)) k1 = GPy.kern.rbf(1) - k2 = GPy.kern.coregionalise(2,2) - k = k1.prod(k2,tensor=True) - m = GPy.models.GPRegression(X,Y,kernel=k) - m.constrain_fixed('.*rbf_var',1.) - #m.constrain_positive('kappa') + k2 = GPy.kern.coregionalise(2, 2) + k = k1.prod(k2, tensor=True) + m = GPy.models.GPRegression(X, Y, kernel=k) + m.constrain_fixed('.*rbf_var', 1.) + # m.constrain_positive('kappa') m.optimize(max_f_eval=optim_iters) pb.figure() - Xtest1 = np.hstack((np.linspace(0,9,100)[:,None],np.zeros((100,1)))) - Xtest2 = np.hstack((np.linspace(0,9,100)[:,None],np.ones((100,1)))) - mean, var,low,up = m.predict(Xtest1) - GPy.util.plot.gpplot(Xtest1[:,0],mean,low,up) - mean, var,low,up = m.predict(Xtest2) - GPy.util.plot.gpplot(Xtest2[:,0],mean,low,up) - pb.plot(X1[:,0],Y1[:,0],'rx',mew=2) - pb.plot(X2[:,0],Y2[:,0],'gx',mew=2) + Xtest1 = np.hstack((np.linspace(0, 9, 100)[:, None], np.zeros((100, 1)))) + Xtest2 = np.hstack((np.linspace(0, 9, 100)[:, None], np.ones((100, 1)))) + mean, var, low, up = m.predict(Xtest1) + GPy.util.plot.gpplot(Xtest1[:, 0], mean, low, up) + mean, var, low, up = m.predict(Xtest2) + GPy.util.plot.gpplot(Xtest2[:, 0], mean, low, up) + pb.plot(X1[:, 0], Y1[:, 0], 'rx', mew=2) + pb.plot(X2[:, 0], Y2[:, 0], 'gx', mew=2) return m @@ -210,44 +210,45 @@ def coregionalisation_sparse(optim_iters=100): """ A simple demonstration of coregionalisation on two sinusoidal functions using sparse approximations. """ - X1 = np.random.rand(500,1)*8 - X2 = np.random.rand(300,1)*5 - index = np.vstack((np.zeros_like(X1),np.ones_like(X2))) - X = np.hstack((np.vstack((X1,X2)),index)) - Y1 = np.sin(X1) + np.random.randn(*X1.shape)*0.05 - Y2 = -np.sin(X2) + np.random.randn(*X2.shape)*0.05 - Y = np.vstack((Y1,Y2)) + X1 = np.random.rand(500, 1) * 8 + X2 = np.random.rand(300, 1) * 5 + index = np.vstack((np.zeros_like(X1), np.ones_like(X2))) + X = np.hstack((np.vstack((X1, X2)), index)) + Y1 = np.sin(X1) + np.random.randn(*X1.shape) * 0.05 + Y2 = -np.sin(X2) + np.random.randn(*X2.shape) * 0.05 + Y = np.vstack((Y1, Y2)) num_inducing = 40 - Z = np.hstack((np.random.rand(num_inducing,1)*8,np.random.randint(0,2,num_inducing)[:,None])) + Z = np.hstack((np.random.rand(num_inducing, 1) * 8, np.random.randint(0, 2, num_inducing)[:, None])) k1 = GPy.kern.rbf(1) - k2 = GPy.kern.coregionalise(2,2) - k = k1.prod(k2,tensor=True) + GPy.kern.white(2,0.001) + k2 = GPy.kern.coregionalise(2, 2) + k = k1.prod(k2, tensor=True) # + GPy.kern.white(2,0.001) - m = GPy.models.SparseGPRegression(X,Y,kernel=k,Z=Z) - m.constrain_fixed('.*rbf_var',1.) + m = GPy.models.SparseGPRegression(X, Y, kernel=k, Z=Z) + m.constrain_fixed('.*rbf_var', 1.) m.constrain_fixed('iip') - m.constrain_bounded('noise_variance',1e-3,1e-1) - m.optimize_restarts(5, robust=True, messages=1, max_f_eval=optim_iters) + m.constrain_bounded('noise_variance', 1e-3, 1e-1) +# m.optimize_restarts(5, robust=True, messages=1, max_iters=optim_iters, optimizer='bfgs') + m.optimize('bfgs', messages=1, max_iters=optim_iters) - #plotting: + # plotting: pb.figure() - Xtest1 = np.hstack((np.linspace(0,9,100)[:,None],np.zeros((100,1)))) - Xtest2 = np.hstack((np.linspace(0,9,100)[:,None],np.ones((100,1)))) - mean, var,low,up = m.predict(Xtest1) - GPy.util.plot.gpplot(Xtest1[:,0],mean,low,up) - mean, var,low,up = m.predict(Xtest2) - GPy.util.plot.gpplot(Xtest2[:,0],mean,low,up) - pb.plot(X1[:,0],Y1[:,0],'rx',mew=2) - pb.plot(X2[:,0],Y2[:,0],'gx',mew=2) + Xtest1 = np.hstack((np.linspace(0, 9, 100)[:, None], np.zeros((100, 1)))) + Xtest2 = np.hstack((np.linspace(0, 9, 100)[:, None], np.ones((100, 1)))) + mean, var, low, up = m.predict(Xtest1) + GPy.util.plot.gpplot(Xtest1[:, 0], mean, low, up) + mean, var, low, up = m.predict(Xtest2) + GPy.util.plot.gpplot(Xtest2[:, 0], mean, low, up) + pb.plot(X1[:, 0], Y1[:, 0], 'rx', mew=2) + pb.plot(X2[:, 0], Y2[:, 0], 'gx', mew=2) y = pb.ylim()[0] - pb.plot(Z[:,0][Z[:,1]==0],np.zeros(np.sum(Z[:,1]==0))+y,'r|',mew=2) - pb.plot(Z[:,0][Z[:,1]==1],np.zeros(np.sum(Z[:,1]==1))+y,'g|',mew=2) + pb.plot(Z[:, 0][Z[:, 1] == 0], np.zeros(np.sum(Z[:, 1] == 0)) + y, 'r|', mew=2) + pb.plot(Z[:, 0][Z[:, 1] == 1], np.zeros(np.sum(Z[:, 1] == 1)) + y, 'g|', mew=2) return m -def multiple_optima(gene_number=937,resolution=80, model_restarts=10, seed=10000, optim_iters=300): +def multiple_optima(gene_number=937, resolution=80, model_restarts=10, seed=10000, optim_iters=300): """Show an example of a multimodal error surface for Gaussian process regression. Gene 939 has bimodal behaviour where the noisey mode is higher.""" # Contour over a range of length scales and signal/noise ratios. @@ -255,8 +256,8 @@ def multiple_optima(gene_number=937,resolution=80, model_restarts=10, seed=10000 log_SNRs = np.linspace(-3., 4., resolution) data = GPy.util.datasets.della_gatta_TRP63_gene_expression(gene_number) - #data['Y'] = data['Y'][0::2, :] - #data['X'] = data['X'][0::2, :] + # data['Y'] = data['Y'][0::2, :] + # data['X'] = data['X'][0::2, :] data['Y'] = data['Y'] - np.mean(data['Y']) @@ -275,11 +276,11 @@ def multiple_optima(gene_number=937,resolution=80, model_restarts=10, seed=10000 optim_point_y = np.empty(2) np.random.seed(seed=seed) for i in range(0, model_restarts): - #kern = GPy.kern.rbf(1, variance=np.random.exponential(1.), lengthscale=np.random.exponential(50.)) - kern = GPy.kern.rbf(1, variance=np.random.uniform(1e-3,1), lengthscale=np.random.uniform(5,50)) + # kern = GPy.kern.rbf(1, variance=np.random.exponential(1.), lengthscale=np.random.exponential(50.)) + kern = GPy.kern.rbf(1, variance=np.random.uniform(1e-3, 1), lengthscale=np.random.uniform(5, 50)) - m = GPy.models.GPRegression(data['X'],data['Y'], kernel=kern) - m['noise_variance'] = np.random.uniform(1e-3,1) + m = GPy.models.GPRegression(data['X'], data['Y'], kernel=kern) + m['noise_variance'] = np.random.uniform(1e-3, 1) optim_point_x[0] = m['rbf_lengthscale'] optim_point_y[0] = np.log10(m['rbf_variance']) - np.log10(m['noise_variance']); @@ -289,12 +290,12 @@ def multiple_optima(gene_number=937,resolution=80, model_restarts=10, seed=10000 optim_point_x[1] = m['rbf_lengthscale'] optim_point_y[1] = np.log10(m['rbf_variance']) - np.log10(m['noise_variance']); - pb.arrow(optim_point_x[0], optim_point_y[0], optim_point_x[1]-optim_point_x[0], optim_point_y[1]-optim_point_y[0], label=str(i), head_length=1, head_width=0.5, fc='k', ec='k') + pb.arrow(optim_point_x[0], optim_point_y[0], optim_point_x[1] - optim_point_x[0], optim_point_y[1] - optim_point_y[0], label=str(i), head_length=1, head_width=0.5, fc='k', ec='k') models.append(m) ax.set_xlim(xlim) ax.set_ylim(ylim) - return m #(models, lls) + return m # (models, lls) def _contour_data(data, length_scales, log_SNRs, kernel_call=GPy.kern.rbf): """Evaluate the GP objective function for a given data set for a range of signal to noise ratios and a range of lengthscales. @@ -307,77 +308,73 @@ def _contour_data(data, length_scales, log_SNRs, kernel_call=GPy.kern.rbf): lls = [] total_var = np.var(data['Y']) kernel = kernel_call(1, variance=1., lengthscale=1.) - Model = GPy.models.GPRegression(data['X'], data['Y'], kernel=kernel) + model = GPy.models.GPRegression(data['X'], data['Y'], kernel=kernel) for log_SNR in log_SNRs: SNR = 10.**log_SNR - noise_var = total_var/(1.+SNR) + noise_var = total_var / (1. + SNR) signal_var = total_var - noise_var - Model.kern['.*variance'] = signal_var - Model['noise_variance'] = noise_var + model.kern['.*variance'] = signal_var + model['noise_variance'] = noise_var length_scale_lls = [] for length_scale in length_scales: - Model['.*lengthscale'] = length_scale - length_scale_lls.append(Model.log_likelihood()) + model['.*lengthscale'] = length_scale + length_scale_lls.append(model.log_likelihood()) lls.append(length_scale_lls) return np.array(lls) -def sparse_GP_regression_1D(N = 400, num_inducing = 5, optim_iters=100): +def sparse_GP_regression_1D(N=400, num_inducing=5, optim_iters=100): """Run a 1D example of a sparse GP regression.""" # sample inputs and outputs - X = np.random.uniform(-3.,3.,(N,1)) - Y = np.sin(X)+np.random.randn(N,1)*0.05 + X = np.random.uniform(-3., 3., (N, 1)) + Y = np.sin(X) + np.random.randn(N, 1) * 0.05 # construct kernel - rbf = GPy.kern.rbf(1) - noise = GPy.kern.white(1) - kernel = rbf + noise + rbf = GPy.kern.rbf(1) # create simple GP Model - m = GPy.models.SparseGPRegression(X, Y, kernel, num_inducing=num_inducing) + m = GPy.models.SparseGPRegression(X, Y, kernel=rbf, num_inducing=num_inducing) m.checkgrad(verbose=1) - m.optimize('tnc', messages = 1, max_f_eval=optim_iters) + m.optimize('tnc', messages=1, max_f_eval=optim_iters) m.plot() return m -def sparse_GP_regression_2D(N = 400, num_inducing = 50, optim_iters=100): +def sparse_GP_regression_2D(N=400, num_inducing=50, optim_iters=100): """Run a 2D example of a sparse GP regression.""" - X = np.random.uniform(-3.,3.,(N,2)) - Y = np.sin(X[:,0:1]) * np.sin(X[:,1:2])+np.random.randn(N,1)*0.05 + X = np.random.uniform(-3., 3., (N, 2)) + Y = np.sin(X[:, 0:1]) * np.sin(X[:, 1:2]) + np.random.randn(N, 1) * 0.05 # construct kernel - rbf = GPy.kern.rbf(2) - noise = GPy.kern.white(2) - kernel = rbf + noise + rbf = GPy.kern.rbf(2) # create simple GP Model - m = GPy.models.SparseGPRegression(X,Y,kernel, num_inducing = num_inducing) + m = GPy.models.SparseGPRegression(X, Y, kernel=rbf, num_inducing=num_inducing) # contrain all parameters to be positive (but not inducing inputs) - m.set('.*len',2.) + m['.*len'] = 2. m.checkgrad() # optimize and plot - m.optimize('tnc', messages = 1, max_f_eval=optim_iters) + m.optimize('tnc', messages=1, max_f_eval=optim_iters) m.plot() print(m) return m def uncertain_inputs_sparse_regression(optim_iters=100): """Run a 1D example of a sparse GP regression with uncertain inputs.""" - fig, axes = pb.subplots(1,2,figsize=(12,5)) + fig, axes = pb.subplots(1, 2, figsize=(12, 5)) # sample inputs and outputs - S = np.ones((20,1)) - X = np.random.uniform(-3.,3.,(20,1)) - Y = np.sin(X)+np.random.randn(20,1)*0.05 - #likelihood = GPy.likelihoods.Gaussian(Y) - Z = np.random.uniform(-3.,3.,(7,1)) + S = np.ones((20, 1)) + X = np.random.uniform(-3., 3., (20, 1)) + Y = np.sin(X) + np.random.randn(20, 1) * 0.05 + # likelihood = GPy.likelihoods.Gaussian(Y) + Z = np.random.uniform(-3., 3., (7, 1)) - k = GPy.kern.rbf(1) + GPy.kern.white(1) + k = GPy.kern.rbf(1) # create simple GP Model - no input uncertainty on this one m = GPy.models.SparseGPRegression(X, Y, kernel=k, Z=Z) @@ -386,7 +383,7 @@ def uncertain_inputs_sparse_regression(optim_iters=100): axes[0].set_title('no input uncertainty') - #the same Model with uncertainty + # the same Model with uncertainty m = GPy.models.SparseGPRegression(X, Y, kernel=k, Z=Z, X_variance=S) m.optimize('scg', messages=1, max_f_eval=optim_iters) m.plot(ax=axes[1]) diff --git a/GPy/models/bayesian_gplvm.py b/GPy/models/bayesian_gplvm.py index b77b996d..979a6345 100644 --- a/GPy/models/bayesian_gplvm.py +++ b/GPy/models/bayesian_gplvm.py @@ -44,7 +44,7 @@ class BayesianGPLVM(SparseGP, GPLVM): assert Z.shape[1] == X.shape[1] if kernel is None: - kernel = kern.rbf(input_dim) + kern.white(input_dim) + kernel = kern.rbf(input_dim) # + kern.white(input_dim) SparseGP.__init__(self, X, likelihood, kernel, Z=Z, X_variance=X_variance, **kwargs) self.ensure_default_constraints() @@ -175,7 +175,7 @@ class BayesianGPLVM(SparseGP, GPLVM): X = np.zeros((resolution ** 2, self.input_dim)) indices = np.r_[:X.shape[0]] if labels is None: - labels = range(self.input_dim) + labels = range(self.output_dim) def plot_function(x): X[:, significant_dims] = x diff --git a/GPy/models/sparse_gp_regression.py b/GPy/models/sparse_gp_regression.py index d5fcc7d7..64674f4a 100644 --- a/GPy/models/sparse_gp_regression.py +++ b/GPy/models/sparse_gp_regression.py @@ -29,7 +29,7 @@ class SparseGPRegression(SparseGP): def __init__(self, X, Y, kernel=None, normalize_X=False, normalize_Y=False, Z=None, num_inducing=10, X_variance=None): # kern defaults to rbf (plus white for stability) if kernel is None: - kernel = kern.rbf(X.shape[1]) + kern.white(X.shape[1], 1e-3) + kernel = kern.rbf(X.shape[1]) # + kern.white(X.shape[1], 1e-3) # Z defaults to a subset of the data if Z is None: From f690da943a9e6352ff04f20981e982a936bd669a Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Fri, 2 Aug 2013 16:37:50 +0100 Subject: [PATCH 094/135] changed psi0 of white to be zero --- GPy/kern/parts/white.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GPy/kern/parts/white.py b/GPy/kern/parts/white.py index 8241bf55..637dc741 100644 --- a/GPy/kern/parts/white.py +++ b/GPy/kern/parts/white.py @@ -51,10 +51,10 @@ class White(Kernpart): pass def psi0(self,Z,mu,S,target): - target += self.variance + pass # target += self.variance def dpsi0_dtheta(self,dL_dpsi0,Z,mu,S,target): - target += dL_dpsi0.sum() + pass # target += dL_dpsi0.sum() def dpsi0_dmuS(self,dL_dpsi0,Z,mu,S,target_mu,target_S): pass From d66a8e02a5a96939b745e965b620704fc84f6a1e Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Fri, 2 Aug 2013 16:38:34 +0100 Subject: [PATCH 095/135] visual? --- GPy/util/visualize.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/GPy/util/visualize.py b/GPy/util/visualize.py index 886e8486..8d6b9837 100644 --- a/GPy/util/visualize.py +++ b/GPy/util/visualize.py @@ -5,7 +5,7 @@ import numpy as np import matplotlib as mpl import time import Image -#import visual +# import visual class data_show: """ @@ -148,15 +148,15 @@ class lvm(matplotlib_show): # A click in the bar chart axis for selection a dimension. if self.sense_axes != None: self.sense_axes.cla() - self.sense_axes.bar(np.arange(self.model.input_dim),1./self.model.input_sensitivity(),color='b') + self.sense_axes.bar(np.arange(self.model.input_dim), self.model.input_sensitivity(), color='b') if self.latent_index[1] == self.latent_index[0]: - self.sense_axes.bar(np.array(self.latent_index[0]),1./self.model.input_sensitivity()[self.latent_index[0]],color='y') - self.sense_axes.bar(np.array(self.latent_index[1]),1./self.model.input_sensitivity()[self.latent_index[1]],color='y') + self.sense_axes.bar(np.array(self.latent_index[0]), self.model.input_sensitivity()[self.latent_index[0]], color='y') + self.sense_axes.bar(np.array(self.latent_index[1]), self.model.input_sensitivity()[self.latent_index[1]], color='y') else: - self.sense_axes.bar(np.array(self.latent_index[0]),1./self.model.input_sensitivity()[self.latent_index[0]],color='g') - self.sense_axes.bar(np.array(self.latent_index[1]),1./self.model.input_sensitivity()[self.latent_index[1]],color='r') + self.sense_axes.bar(np.array(self.latent_index[0]), self.model.input_sensitivity()[self.latent_index[0]], color='g') + self.sense_axes.bar(np.array(self.latent_index[1]), self.model.input_sensitivity()[self.latent_index[1]], color='r') self.sense_axes.figure.canvas.draw() From 56b86542d4e071975cf06c9c99f26649bbb6dbcb Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Fri, 2 Aug 2013 16:39:34 +0100 Subject: [PATCH 096/135] better bound extimate for plot_latent background --- GPy/util/plot_latent.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/GPy/util/plot_latent.py b/GPy/util/plot_latent.py index dd21b2ea..81c3d6fc 100644 --- a/GPy/util/plot_latent.py +++ b/GPy/util/plot_latent.py @@ -46,8 +46,9 @@ def plot_latent(model, labels=None, which_indices=None, Xtest_full[:, [input_1, input_2]] = x mu, var, low, up = model.predict(Xtest_full) var = var[:, :1] - return var - view = ImshowController(ax, plot_function, tuple(xmin) + tuple(xmax), + return np.log(var) + view = ImshowController(ax, plot_function, + tuple(model.X.min(0)[:, [input_1, input_2]]) + tuple(model.X.max(0)[:, [input_1, input_2]]), resolution, aspect=aspect, interpolation='bilinear', cmap=pb.cm.binary) @@ -124,7 +125,8 @@ def plot_magnification(model, labels=None, which_indices=None, Xtest_full[:, [input_1, input_2]] = x mf=model.magnification(Xtest_full) return mf - view = ImshowController(ax, plot_function, tuple(xmin) + tuple(xmax), + view = ImshowController(ax, plot_function, + tuple(model.X.min(0)[:, [input_1, input_2]]) + tuple(model.X.max(0)[:, [input_1, input_2]]), resolution, aspect=aspect, interpolation='bilinear', cmap=pb.cm.gray) From b54f614a2c75db8c3341dcd184bb87949e03bcaa Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Fri, 2 Aug 2013 16:39:53 +0100 Subject: [PATCH 097/135] linear kernel old implementation --- GPy/kern/parts/linear.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/GPy/kern/parts/linear.py b/GPy/kern/parts/linear.py index 82a8c263..e20270ad 100644 --- a/GPy/kern/parts/linear.py +++ b/GPy/kern/parts/linear.py @@ -140,16 +140,16 @@ class Linear(Kernpart): def dpsi1_dZ(self, dL_dpsi1, Z, mu, S, target): self.dK_dX(dL_dpsi1.T, Z, mu, target) - def psi2_old(self, Z, mu, S, target): + def psi2(self, Z, mu, S, target): self._psi_computations(Z, mu, S) target += self._psi2 - def psi2(self,Z,mu,S,target): + def psi2_new(self,Z,mu,S,target): tmp = np.zeros((mu.shape[0], Z.shape[0])) self.K(mu,Z,tmp) target += tmp[:,:,None]*tmp[:,None,:] + np.sum(S[:,None,None,:]*self.variances**2*Z[None,:,None,:]*Z[None,None,:,:],-1) - def dpsi2_dtheta(self, dL_dpsi2, Z, mu, S, target): + def dpsi2_dtheta_new(self, dL_dpsi2, Z, mu, S, target): tmp = np.zeros((mu.shape[0], Z.shape[0])) self.K(mu,Z,tmp) self.dK_dtheta(2.*np.sum(dL_dpsi2*tmp[:,None,:],2),mu,Z,target) @@ -159,7 +159,7 @@ class Linear(Kernpart): else: target += result.sum() - def dpsi2_dtheta_old(self, dL_dpsi2, Z, mu, S, target): + def dpsi2_dtheta(self, dL_dpsi2, Z, mu, S, target): self._psi_computations(Z, mu, S) tmp = dL_dpsi2[:, :, :, None] * (self.ZAinner[:, :, None, :] * (2 * Z)[None, None, :, :]) if self.ARD: @@ -167,7 +167,7 @@ class Linear(Kernpart): else: target += tmp.sum() - def dpsi2_dmuS(self, dL_dpsi2, Z, mu, S, target_mu, target_S): + def dpsi2_dmuS_new(self, dL_dpsi2, Z, mu, S, target_mu, target_S): tmp = np.zeros((mu.shape[0], Z.shape[0])) self.K(mu,Z,tmp) self.dK_dX(2.*np.sum(dL_dpsi2*tmp[:,None,:],2),mu,Z,target_mu) @@ -176,7 +176,7 @@ class Linear(Kernpart): Zs_sq = Zs[:,None,:]*Zs[None,:,:] target_S += (dL_dpsi2[:,:,:,None]*Zs_sq[None,:,:,:]).sum(1).sum(1) - def dpsi2_dmuS_old(self, dL_dpsi2, Z, mu, S, target_mu, target_S): + def dpsi2_dmuS(self, dL_dpsi2, Z, mu, S, target_mu, target_S): """Think N,num_inducing,num_inducing,input_dim """ self._psi_computations(Z, mu, S) AZZA = self.ZA.T[:, None, :, None] * self.ZA[None, :, None, :] From 59139f01f03fd177f352843c07c837a60442b046 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Fri, 2 Aug 2013 16:40:16 +0100 Subject: [PATCH 098/135] Prodpart bugfix --- GPy/kern/constructors.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GPy/kern/constructors.py b/GPy/kern/constructors.py index b549e139..9a82cd25 100644 --- a/GPy/kern/constructors.py +++ b/GPy/kern/constructors.py @@ -255,7 +255,7 @@ def prod(k1,k2,tensor=False): :type k1, k2: kernpart :rtype: kernel object """ - part = parts.prodpart(k1,k2,tensor) + part = parts.prod.Prod(k1, k2, tensor) return kern(part.input_dim, [part]) def symmetric(k): From 9e0795afc477a07d42dd91d7a6ce0303e3a3c9bd Mon Sep 17 00:00:00 2001 From: Alan Saul Date: Wed, 7 Aug 2013 16:28:16 +0100 Subject: [PATCH 099/135] Mocking matplotlib pyplot as readthedocs is failing to import it (again...) --- doc/conf.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/conf.py b/doc/conf.py index 4c377cb6..b6dad7fd 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -103,9 +103,10 @@ class Mock(object): #import mock print "Mocking" -MOCK_MODULES = ['sympy', - 'sympy.utilities', 'sympy.utilities.codegen', 'sympy.core.cache', - 'sympy.core', 'sympy.parsing', 'sympy.parsing.sympy_parser', +MOCK_MODULES = ['sympy', + 'sympy.utilities', 'sympy.utilities.codegen', 'sympy.core.cache', + 'sympy.core', 'sympy.parsing', 'sympy.parsing.sympy_parser', + 'matplotlib.pyplot' ] for mod_name in MOCK_MODULES: sys.modules[mod_name] = Mock() From 7aac769d37e67caa43ca5aff8ce9d1b0efa150c4 Mon Sep 17 00:00:00 2001 From: Neil Lawrence Date: Fri, 16 Aug 2013 18:28:16 +0100 Subject: [PATCH 100/135] Modifications to transformations ... not sure which tests to run to make sure I haven't messed things up. New code avoids exponentiating values greater than -log(eps) or less than log(eps). Also changed negative code to call the positive code (I think they should inherit the positive code ... but maybe not. --- GPy/core/transformations.py | 41 ++++++++++++++++++++----------------- GPy/kern/constructors.py | 38 ++++++++++++++++++++++++++-------- GPy/kern/parts/__init__.py | 1 + GPy/models/gp_regression.py | 1 - GPy/testing/unit_tests.py | 5 +++++ 5 files changed, 58 insertions(+), 28 deletions(-) diff --git a/GPy/core/transformations.py b/GPy/core/transformations.py index 5db835a9..419bc54e 100644 --- a/GPy/core/transformations.py +++ b/GPy/core/transformations.py @@ -4,6 +4,8 @@ import numpy as np from GPy.core.domains import POSITIVE, NEGATIVE, BOUNDED +import sys +lim_val = -np.log(sys.float_info.epsilon) class transformation(object): domain = None @@ -17,7 +19,7 @@ class transformation(object): """ df_dx evaluated at self.f(x)=f""" raise NotImplementedError def initialize(self, f): - """ produce a sensible initial values for f(x)""" + """ produce a sensible initial value for f(x)""" raise NotImplementedError def __str__(self): raise NotImplementedError @@ -25,13 +27,14 @@ class transformation(object): class logexp(transformation): domain = POSITIVE def f(self, x): - return np.log(1. + np.exp(x)) + return np.where(x>lim_val, x, np.log(1. + np.exp(x))) def finv(self, f): - return np.log(np.exp(f) - 1.) + return np.where(f>lim_val, f, np.log(np.exp(f) - 1.)) def gradfactor(self, f): - ef = np.exp(f) - return (ef - 1.) / ef + return np.where(f>lim_val, 1., 1 - np.exp(-f)) def initialize(self, f): + if np.any(f < 0.): + print "Warning: changing parameters to satisfy constraints" return np.abs(f) def __str__(self): return '(+ve)' @@ -39,18 +42,19 @@ class logexp(transformation): class negative_logexp(transformation): domain = NEGATIVE def f(self, x): - return -np.log(1. + np.exp(x)) + return -logexp.f(x) #np.log(1. + np.exp(x)) def finv(self, f): - return np.log(np.exp(-f) - 1.) + return logexp.finv(-f) #np.log(np.exp(-f) - 1.) def gradfactor(self, f): - ef = np.exp(-f) - return -(ef - 1.) / ef + return -logexp.gradfactor(-f) + #ef = np.exp(-f) + #return -(ef - 1.) / ef def initialize(self, f): - return -np.abs(f) + return -logexp.initialize(f) #np.abs(f) def __str__(self): return '(-ve)' -class logexp_clipped(transformation): +class logexp_clipped(logexp): max_bound = 1e100 min_bound = 1e-10 log_max_bound = np.log(max_bound) @@ -78,9 +82,10 @@ class logexp_clipped(transformation): return '(+ve_c)' class exponent(transformation): + # TODO: can't allow this to go to zero, need to set a lower bound. Similar with negative exponent below. See old MATLAB code. domain = POSITIVE def f(self, x): - return np.exp(x) + return np.where(x-lim_val, np.exp(x), np.exp(-lim_val)), np.exp(lim_val)) def finv(self, x): return np.log(x) def gradfactor(self, f): @@ -92,18 +97,16 @@ class exponent(transformation): def __str__(self): return '(+ve)' -class negative_exponent(transformation): +class negative_exponent(exponent): domain = NEGATIVE def f(self, x): - return -np.exp(x) - def finv(self, x): - return np.log(-x) + return -exponent.f(x) + def finv(self, f): + return exponent.finv(-f) def gradfactor(self, f): return f def initialize(self, f): - if np.any(f > 0.): - print "Warning: changing parameters to satisfy constraints" - return -np.abs(f) + return -exponent.initialize(f) #np.abs(f) def __str__(self): return '(-ve)' diff --git a/GPy/kern/constructors.py b/GPy/kern/constructors.py index 9a82cd25..9e976997 100644 --- a/GPy/kern/constructors.py +++ b/GPy/kern/constructors.py @@ -51,6 +51,24 @@ def linear(input_dim,variances=None,ARD=False): part = parts.linear.Linear(input_dim,variances,ARD) return kern(input_dim, [part]) +def mlp(input_dim,variance=1., weight_variance=None,bias_variance=100.,ARD=False): + """ + Construct an MLP kernel + + :param input_dim: dimensionality of the kernel, obligatory + :type input_dim: int + :param variance: the variance of the kernel + :type variance: float + :param weight_scale: the lengthscale of the kernel + :type weight_scale: vector of weight variances for input weights in neural network (length 1 if kernel is isotropic) + :param bias_variance: the variance of the biases in the neural network. + :type bias_variance: float + :param ARD: Auto Relevance Determination (allows for ARD version of covariance) + :type ARD: Boolean + """ + part = parts.mlp.MLP(input_dim,variance,weight_variance,bias_variance,ARD) + return kern(input_dim, [part]) + def white(input_dim,variance=1.): """ Construct a white kernel. @@ -253,6 +271,8 @@ def prod(k1,k2,tensor=False): :param k1, k2: the kernels to multiply :type k1, k2: kernpart + :param tensor: The kernels are either multiply as functions defined on the same input space (default) or on the product of the input spaces + :type tensor: Boolean :rtype: kernel object """ part = parts.prod.Prod(k1, k2, tensor) @@ -260,13 +280,13 @@ def prod(k1,k2,tensor=False): def symmetric(k): """ - Construct a symmetrical kernel from an existing kernel + Construct a symmetric kernel from an existing kernel """ k_ = k.copy() k_.parts = [symmetric.Symmetric(p) for p in k.parts] return k_ -def coregionalise(Nout,R=1, W=None, kappa=None): +def coregionalise(Nout, R=1, W=None, kappa=None): p = parts.coregionalise.Coregionalise(Nout,R,W,kappa) return kern(1,[p]) @@ -291,11 +311,13 @@ def fixed(input_dim, K, variance=1.): """ Construct a Fixed effect kernel. - Arguments - --------- - input_dim (int), obligatory - K (np.array), obligatory - variance (float) + :param input_dim: the number of input dimensions + :type input_dim: int (input_dim=1 is the only value currently supported) + :param K: the variance :math:`\sigma^2` + :type K: np.array + :param variance: kernel variance + :type variance: float + :rtype: kern object """ part = parts.fixed.Fixed(input_dim, K, variance) return kern(input_dim, [part]) @@ -318,7 +340,7 @@ def independent_outputs(k): def hierarchical(k): """ - Construct a kernel with independent outputs from an existing kernel + TODO THis can't be right! Construct a kernel with independent outputs from an existing kernel """ # for sl in k.input_slices: # assert (sl.start is None) and (sl.stop is None), "cannot adjust input slices! (TODO)" diff --git a/GPy/kern/parts/__init__.py b/GPy/kern/parts/__init__.py index e39b70c2..3b57fdc3 100644 --- a/GPy/kern/parts/__init__.py +++ b/GPy/kern/parts/__init__.py @@ -8,6 +8,7 @@ import independent_outputs import linear import Matern32 import Matern52 +import mlp import periodic_exponential import periodic_Matern32 import periodic_Matern52 diff --git a/GPy/models/gp_regression.py b/GPy/models/gp_regression.py index 615e6618..86e1f7de 100644 --- a/GPy/models/gp_regression.py +++ b/GPy/models/gp_regression.py @@ -37,7 +37,6 @@ class GPRegression(GP): def getstate(self): return GP.getstate(self) - def setstate(self, state): return GP.setstate(self, state) diff --git a/GPy/testing/unit_tests.py b/GPy/testing/unit_tests.py index b3029d7f..092f9487 100644 --- a/GPy/testing/unit_tests.py +++ b/GPy/testing/unit_tests.py @@ -59,6 +59,11 @@ class GradientTests(unittest.TestCase): k = GPy.kern.rbf(2, ARD=True) self.check_model_with_white(k, model_type='GPRegression', dimension=2) + def test_GPRegression_mlp_1d(self): + ''' Testing the GP regression with mlp kernel with white kernel on 1d data ''' + mlp = GPy.kern.mlp(1) + self.check_model_with_white(mlp, model_type='GPRegression', dimension=1) + def test_GPRegression_matern52_1D(self): ''' Testing the GP regression with matern52 kernel on 1d data ''' matern52 = GPy.kern.Matern52(1) From bba3dc5458dfc197a812a2aa6980569a89f0113b Mon Sep 17 00:00:00 2001 From: Neil Lawrence Date: Fri, 16 Aug 2013 21:24:30 +0100 Subject: [PATCH 101/135] Added mlp covariance (x gradient not working) --- GPy/kern/parts/mlp.py | 161 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 GPy/kern/parts/mlp.py diff --git a/GPy/kern/parts/mlp.py b/GPy/kern/parts/mlp.py new file mode 100644 index 00000000..572713ef --- /dev/null +++ b/GPy/kern/parts/mlp.py @@ -0,0 +1,161 @@ +# Copyright (c) 2013, GPy authors (see AUTHORS.txt). +# Licensed under the BSD 3-clause license (see LICENSE.txt) + +from kernpart import Kernpart +import numpy as np +four_over_tau = 2./np.pi + +class MLP(Kernpart): + """ + multi layer perceptron kernel (also known as arc sine kernel or neural network kernel) + + .. math:: + + k(x,y) = \sigma^2 \frac{2}{\pi} \text{asin} \left(\frac{\sigma_w^2 x^\top y+\sigma_b^2}{\sqrt{\sigma_w^2x^\top x + \sigma_b^2 + 1}\sqrt{\sigma_w^2 y^\top y \sigma_b^2 +1}} \right) + + :param input_dim: the number of input dimensions + :type input_dim: int + :param variance: the variance :math:`\sigma^2` + :type variance: float + :param weight_variance: the vector of the variances of the prior over input weights in the neural network :math:`\sigma^2_w` + :type weight_variance: array or list of the appropriate size (or float if there is only one weight variance parameter) + :param bias_variance: the variance of the prior over bias parameters :math:`\sigma^2_b` + :param ARD: Auto Relevance Determination. If equal to "False", the kernel is isotropic (ie. one weight variance parameter \sigma^2_w), otherwise there is one weight variance parameter per dimension. + :type ARD: Boolean + :rtype: Kernpart object + + """ + + def __init__(self, input_dim, variance=1., weight_variance=None, bias_variance=100., ARD=False): + ARD = False + self.input_dim = input_dim + self.ARD = ARD + if not ARD: + self.num_params=3 + if weight_variance is not None: + weight_variance = np.asarray(weight_variance) + assert weight_variance.size == 1, "Only one weight variance needed for non-ARD kernel" + else: + weight_variance = 100.*np.ones(1) + else: + self.num_params = self.input_dim + 2 + if weight_variance is not None: + weight_variance = np.asarray(weight_variance) + assert weight_variance.size == self.input_dim, "bad number of weight variances" + else: + weight_variance = np.ones(self.input_dim) + + self.name='mlp' + self._set_params(np.hstack((variance, weight_variance.flatten(), bias_variance))) + + def _get_params(self): + return np.hstack((self.variance, self.weight_variance.flatten(), self.bias_variance)) + + def _set_params(self, x): + assert x.size == (self.num_params) + self.variance = x[0] + self.weight_variance = x[1:-1] + self.weight_std = np.sqrt(self.weight_variance) + self.bias_variance = x[-1] + + def _get_param_names(self): + if self.num_params == 3: + return ['variance', 'weight_variance', 'bias_variance'] + else: + return ['variance'] + ['weight_variance_%i' % i for i in range(self.lengthscale.size)] + ['bias_variance'] + + def K(self, X, X2, target): + """Return covariance between X and X2.""" + self._K_computations(X, X2) + target += self.variance*self._K_dvar + + def Kdiag(self, X, target): + """Compute the diagonal of the covariance matrix for X.""" + self._K_diag_computations(X) + target+= self.variance*self._K_diag_dvar + + def dK_dtheta(self, dL_dK, X, X2, target): + """Derivative of the covariance with respect to the parameters.""" + self._K_computations(X, X2) + denom3 = self._K_denom*self._K_denom*self._K_denom + base = four_over_tau*self.variance/np.sqrt(1-self._K_asin_arg*self._K_asin_arg) + base_cov_grad = base*dL_dK + + if X2 is None: + vec = np.diag(self._K_inner_prod) + target[1] += ((self._K_inner_prod/self._K_denom + -.5*self._K_numer/denom3 + *(np.outer((self.weight_std*vec+self.bias_variance+1.), self.weight_std*vec) + +np.outer(self.weight_std*vec,(self.weight_std*vec+self.bias_variance+1.))))*base_cov_grad).sum() + target[2] += ((1./self._K_denom + -.5*self._K_numer/denom3 + *((vec[None, :]+vec[:, None])*self.weight_variance + +2.*self.bias_variance + 2.))*base_cov_grad).sum() + else: + vec1 = (X*X).sum(1) + vec2 = (X2*X2).sum(1) + target[1] += ((self._K_inner_prod/self._K_denom + -.5*self._K_numer/denom3 + *(np.outer((self.weight_variance*vec1+self.bias_variance+1.), vec2) + np.outer(vec1, self.weight_variance*vec2 + self.bias_variance_1.)))*base_cov_grad).sum() + target[2] += ((1./self._K_denom + -.5*self._K_numer/denom3 + *((vec1[None, :]+vec2[:, None])*self.weight_variance + + 2*self.bias_variance + 2.))*base_cov_grad).sum() + + target[0] += np.sum(self._K_dvar*dL_dK) + + def dK_dX(self, dL_dK, X, X2, target): + """Derivative of the covariance matrix with respect to X""" + self._K_computations(X, X2) + gX = np.zeros((X2.shape[0], X.shape[1], X.shape[0])) + + for i in range(X.shape[0]): + gX[:, :, i] = self._dK_dX_point(X[i, :], X2) + + def _dK_dX_point(self, x, X2): + """Gradient with respect to one point of X""" + inner_prod = np.dot(X2,x.T) + numer = inner_prod*self.weight_variance + self.bias_variance + vec1 = (x*x).sum(1)*self.weight_variance + self.bias_variance + 1. + vec2 = (X2*X2).sum(1)*self.weight_variance + self.bias_variance + 1. + denom = np.sqrt(np.outer(vec2,vec1)) + arg = numer/denom + gX = np.zeros(X2.shape) + denom3 = denom*denom*denom + for j in range(X2.shape[1]): + gX[:, j]=X2[:, j]/denom - vec2*x[:, j]*numer/denom3 + gX[:, j] = four_over_tau*self.weight_variance*self.variance*gX[:, j]/np.sqrt(1-arg*arg) + + + + def _K_computations(self, X, X2): + if self.ARD: + pass + else: + if X2 is None: + self._K_inner_prod = np.dot(X,X.T) + self._K_numer = self._K_inner_prod*self.weight_variance+self.bias_variance + vec = np.diag(self._K_numer) + 1. + self._K_denom = np.sqrt(np.outer(vec,vec)) + self._K_asin_arg = self._K_numer/self._K_denom + self._K_dvar = four_over_tau*np.arcsin(self._K_asin_arg) + else: + self._K_inner_prod = np.dot(X,X2.T) + self._K_numer = self._K_inner_prod*self.weight_variance + self.bias_variance + vec1 = (X*X).sum(1)*self.weight_variance + self.bias_variance + 1. + vec2 = (X2*X2).sum(1)*self.weight_variance + self.bias_variance + 1. + self._K_denom = np.sqrt(np.outer(vec1,vec2)) + self._K_asin_arg = self._K_numer/self._K_denom + self._K_dvar = four_over_tau*np.arcsin(self._K_asin_arg) + + def _K_diag_computations(self, X): + if self.ARD: + pass + else: + self._K_diag_numer = (X*X).sum(1)*self.weight_variance + self.bias_variance + self._K_diag_denom = self._K_diag_numer+1. + self._K_diag_dvar = four_over_tau*np.arcsin(self._K_diag_numer/self._K_diag_denom) + + + + From a5701980294ceaa768e350733d160d330cd8a2d3 Mon Sep 17 00:00:00 2001 From: Neil Lawrence Date: Sat, 17 Aug 2013 07:13:51 +0100 Subject: [PATCH 102/135] Added automatic computation of dKdiag_dtheta in kernpart.py using dK_dtheta. --- GPy/kern/parts/kernpart.py | 6 +++++- GPy/kern/parts/mlp.py | 27 ++++++++++++++++----------- GPy/util/datasets.py | 19 ++++++++++++------- 3 files changed, 33 insertions(+), 19 deletions(-) diff --git a/GPy/kern/parts/kernpart.py b/GPy/kern/parts/kernpart.py index 2ed56d66..bb836d1c 100644 --- a/GPy/kern/parts/kernpart.py +++ b/GPy/kern/parts/kernpart.py @@ -29,7 +29,11 @@ class Kernpart(object): def dK_dtheta(self,dL_dK,X,X2,target): raise NotImplementedError def dKdiag_dtheta(self,dL_dKdiag,X,target): - raise NotImplementedError + # In the base case compute this by calling dK_dtheta. Need to + # override for stationary covariances (for example) to save + # time. + for i in range(X.shape[0]): + self.dK_dtheta(dL_dKdiag[i], X[i, :][None, :], X2=None, target=target) def psi0(self,Z,mu,S,target): raise NotImplementedError def dpsi0_dtheta(self,dL_dpsi0,Z,mu,S,target): diff --git a/GPy/kern/parts/mlp.py b/GPy/kern/parts/mlp.py index 572713ef..e2531b23 100644 --- a/GPy/kern/parts/mlp.py +++ b/GPy/kern/parts/mlp.py @@ -96,34 +96,39 @@ class MLP(Kernpart): vec2 = (X2*X2).sum(1) target[1] += ((self._K_inner_prod/self._K_denom -.5*self._K_numer/denom3 - *(np.outer((self.weight_variance*vec1+self.bias_variance+1.), vec2) + np.outer(vec1, self.weight_variance*vec2 + self.bias_variance_1.)))*base_cov_grad).sum() + *(np.outer((self.weight_variance*vec1+self.bias_variance+1.), vec2) + np.outer(vec1, self.weight_variance*vec2 + self.bias_variance+1.)))*base_cov_grad).sum() target[2] += ((1./self._K_denom -.5*self._K_numer/denom3 - *((vec1[None, :]+vec2[:, None])*self.weight_variance + *((vec1[:, None]+vec2[None, :])*self.weight_variance + 2*self.bias_variance + 2.))*base_cov_grad).sum() target[0] += np.sum(self._K_dvar*dL_dK) + def dK_dX(self, dL_dK, X, X2, target): """Derivative of the covariance matrix with respect to X""" self._K_computations(X, X2) gX = np.zeros((X2.shape[0], X.shape[1], X.shape[0])) for i in range(X.shape[0]): - gX[:, :, i] = self._dK_dX_point(X[i, :], X2) - - def _dK_dX_point(self, x, X2): + gX[:, :, i] = self._dK_dX_point(X, X2, i) + + + def _dK_dX_point(self, X, X2, i): """Gradient with respect to one point of X""" - inner_prod = np.dot(X2,x.T) - numer = inner_prod*self.weight_variance + self.bias_variance - vec1 = (x*x).sum(1)*self.weight_variance + self.bias_variance + 1. + + inner_prod = self._K_inner_prod[i, :].T + numer = self._K_numer[i, :].T + denom = self._K_denom[i, :].T + arg = self._K_asin_arg[i, :].T + vec1 = (X[i, :]*X[i, :]).sum()*self.weight_variance + self.bias_variance + 1. vec2 = (X2*X2).sum(1)*self.weight_variance + self.bias_variance + 1. - denom = np.sqrt(np.outer(vec2,vec1)) - arg = numer/denom + #denom = np.sqrt(np.outer(vec2,vec1)) + #arg = numer/denom gX = np.zeros(X2.shape) denom3 = denom*denom*denom for j in range(X2.shape[1]): - gX[:, j]=X2[:, j]/denom - vec2*x[:, j]*numer/denom3 + gX[:, j]=X2[:, j]/denom - vec2*X[i, j]*numer/denom3 gX[:, j] = four_over_tau*self.weight_variance*self.variance*gX[:, j]/np.sqrt(1-arg*arg) diff --git a/GPy/util/datasets.py b/GPy/util/datasets.py index fb47646f..9c46b2f1 100644 --- a/GPy/util/datasets.py +++ b/GPy/util/datasets.py @@ -203,17 +203,22 @@ def swiss_roll(N=3000): Y = mat_data['X_data'][:, 0:N].transpose() return {'Y': Y, 'X': mat_data['X_data'], 'info': "The first 3,000 points from the swiss roll data of Tennenbaum, de Silva and Langford (2001)."} -def toy_rbf_1d(seed=default_seed): +def toy_rbf_1d(seed=default_seed, num_samples=500): + """Samples 500 values of a function from an RBF covariance with very small noise for inputs uniformly distributed between -1 and 1. + :param seed: seed to use for random sampling. + :type seed: int + :param num_samples: number of samples to sample in the function (default 500). + :type num_samples: int + """ np.random.seed(seed=seed) - numIn = 1 - N = 500 - X = np.random.uniform(low= -1.0, high=1.0, size=(N, numIn)) + num_in = 1 + X = np.random.uniform(low= -1.0, high=1.0, size=(num_samples, num_in)) X.sort(axis=0) - rbf = GPy.kern.rbf(numIn, variance=1., lengthscale=np.array((0.25,))) - white = GPy.kern.white(numIn, variance=1e-2) + rbf = GPy.kern.rbf(num_in, variance=1., lengthscale=np.array((0.25,))) + white = GPy.kern.white(num_in, variance=1e-2) kernel = rbf + white K = kernel.K(X) - y = np.reshape(np.random.multivariate_normal(np.zeros(N), K), (N, 1)) + y = np.reshape(np.random.multivariate_normal(np.zeros(num_samples), K), (num_samples, 1)) return {'X':X, 'Y':y, 'info': "Samples 500 values of a function from an RBF covariance with very small noise for inputs uniformly distributed between -1 and 1."} def toy_rbf_1d_50(seed=default_seed): From 3f6c01898d4f64107e6f1d4d52e8bef0e83ebcfe Mon Sep 17 00:00:00 2001 From: Neil Lawrence Date: Sat, 17 Aug 2013 09:07:09 +0200 Subject: [PATCH 103/135] Added first draft of polynomial kernel. --- GPy/kern/constructors.py | 20 ++++++++++++++++++++ GPy/kern/parts/__init__.py | 1 + GPy/kern/parts/kernpart.py | 2 +- GPy/kern/parts/mlp.py | 9 +++++---- 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/GPy/kern/constructors.py b/GPy/kern/constructors.py index 9e976997..6fd3aa51 100644 --- a/GPy/kern/constructors.py +++ b/GPy/kern/constructors.py @@ -69,6 +69,26 @@ def mlp(input_dim,variance=1., weight_variance=None,bias_variance=100.,ARD=False part = parts.mlp.MLP(input_dim,variance,weight_variance,bias_variance,ARD) return kern(input_dim, [part]) +def poly(input_dim,variance=1., weight_variance=None,bias_variance=1.,degree=2, ARD=False): + """ + Construct a polynomial kernel + + :param input_dim: dimensionality of the kernel, obligatory + :type input_dim: int + :param variance: the variance of the kernel + :type variance: float + :param weight_scale: the lengthscale of the kernel + :type weight_scale: vector of weight variances for input weights. + :param bias_variance: the variance of the biases. + :type bias_variance: float + :param degree: the degree of the polynomial + :type degree: int + :param ARD: Auto Relevance Determination (allows for ARD version of covariance) + :type ARD: Boolean + """ + part = parts.poly.POLY(input_dim,variance,weight_variance,bias_variance,degree,ARD) + return kern(input_dim, [part]) + def white(input_dim,variance=1.): """ Construct a white kernel. diff --git a/GPy/kern/parts/__init__.py b/GPy/kern/parts/__init__.py index 3b57fdc3..cf8df575 100644 --- a/GPy/kern/parts/__init__.py +++ b/GPy/kern/parts/__init__.py @@ -12,6 +12,7 @@ import mlp import periodic_exponential import periodic_Matern32 import periodic_Matern52 +import poly import prod_orthogonal import prod import rational_quadratic diff --git a/GPy/kern/parts/kernpart.py b/GPy/kern/parts/kernpart.py index bb836d1c..7fa54b42 100644 --- a/GPy/kern/parts/kernpart.py +++ b/GPy/kern/parts/kernpart.py @@ -56,5 +56,5 @@ class Kernpart(object): raise NotImplementedError def dpsi2_dmuS(self,dL_dpsi2,Z,mu,S,target_mu,target_S): raise NotImplementedError - def dK_dX(self,X,X2,target): + def dK_dX(self, dL_dK, X, X2, target): raise NotImplementedError diff --git a/GPy/kern/parts/mlp.py b/GPy/kern/parts/mlp.py index e2531b23..2b8d6799 100644 --- a/GPy/kern/parts/mlp.py +++ b/GPy/kern/parts/mlp.py @@ -111,10 +111,10 @@ class MLP(Kernpart): gX = np.zeros((X2.shape[0], X.shape[1], X.shape[0])) for i in range(X.shape[0]): - gX[:, :, i] = self._dK_dX_point(X, X2, i) + gX[:, :, i] = self._dK_dX_point(dL_dK, X, X2, target, i) - def _dK_dX_point(self, X, X2, i): + def _dK_dX_point(self, dL_dK, X, X2, target, i): """Gradient with respect to one point of X""" inner_prod = self._K_inner_prod[i, :].T @@ -127,10 +127,11 @@ class MLP(Kernpart): #arg = numer/denom gX = np.zeros(X2.shape) denom3 = denom*denom*denom + gX = np.zeros((X2.shape[0], X2.shape[1])) for j in range(X2.shape[1]): - gX[:, j]=X2[:, j]/denom - vec2*X[i, j]*numer/denom3 + gX[:, j] =X2[:, j]/denom - vec2*X[i, j]*numer/denom3 gX[:, j] = four_over_tau*self.weight_variance*self.variance*gX[:, j]/np.sqrt(1-arg*arg) - + target[i, :] def _K_computations(self, X, X2): From 791f499412a6b056ee219ef959658831ee1bb120 Mon Sep 17 00:00:00 2001 From: Neil Lawrence Date: Sat, 17 Aug 2013 23:51:07 +0200 Subject: [PATCH 104/135] Finished first draft of system for downloading data sets. --- GPy/util/datasets/DellaGattadata.mat | Bin 3729650 -> 0 bytes GPy/util/datasets/oil/DataTrn.txt | 1000 ------------------------- GPy/util/datasets/oil/DataTrnLbls.txt | 1000 ------------------------- GPy/util/datasets/oil/DataTst.txt | 1000 ------------------------- GPy/util/datasets/oil/DataTstLbls.txt | 1000 ------------------------- GPy/util/datasets/oil/DataVdn.txt | 1000 ------------------------- GPy/util/datasets/oil/DataVdnLbls.txt | 1000 ------------------------- GPy/util/datasets/olympics.mat | Bin 2100 -> 0 bytes GPy/util/datasets/swiss_roll_data.mat | Bin 800256 -> 0 bytes 9 files changed, 6000 deletions(-) delete mode 100644 GPy/util/datasets/DellaGattadata.mat delete mode 100644 GPy/util/datasets/oil/DataTrn.txt delete mode 100644 GPy/util/datasets/oil/DataTrnLbls.txt delete mode 100644 GPy/util/datasets/oil/DataTst.txt delete mode 100644 GPy/util/datasets/oil/DataTstLbls.txt delete mode 100644 GPy/util/datasets/oil/DataVdn.txt delete mode 100644 GPy/util/datasets/oil/DataVdnLbls.txt delete mode 100644 GPy/util/datasets/olympics.mat delete mode 100644 GPy/util/datasets/swiss_roll_data.mat diff --git a/GPy/util/datasets/DellaGattadata.mat b/GPy/util/datasets/DellaGattadata.mat deleted file mode 100644 index fa70953e3491f8457a6b708d10204bbaf1b830cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3729650 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

^fvA^fryOm}< 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�b&lU?bD4_g3dOBCLd^FG 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 z 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�nf`(f|Uz6J*VnZ%#Y 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 z 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�sgyhOFMqDXBy0mu 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

h?>9$8miAcvqs8TQw>RG6l} zt-IbnW{Dp*-*2Cz;BWq)!ZuJ*x_+-zNF5b-YD*u>Kaz*cwi#MY&NN7`+_3!BJ9%uM z-8`%;pyJz}2UENx3h3QGqp%^AhPx4cM+ziV#BUt`BXX(;ke=tz&J&?9Bq8o&8-d#; zcM6pxB223lZ=`(@q0+CwGtf?qt^t_~4Sz+@Rh?_J_pS(!3ntm}kBVRs$-1?zNrY85 zwPfYGMd)v+Df!qYBG1(ePTDz7s(}F%OjoKzcB&B-k$(17X#9QB+P%Of) zy7!M}q?6CNE6Zv8F9QC5uAVL7h_JLFb!$d10qrY!e`yR6+9$5In&T#dw%h8j9zqd@ z9cDe=8!STTfWUl~qX;Qzy8BEZ0@GlsdeJUjp;Hs`O*0tqt(3& zz2#y1m9|FCRg6~xMd}~E7`y)Vo-VT_`^rhPGd%B$KvV9VQNBQoJAJA2czZGQdu1HF zJjHmbJw8csf*29yrkg0^#W)<^P0Nyq5uB7a{@5Nd+$OF{N%0qBncQGVBpJ`G*gX5c zI~urG)zrz|sR6bmdw!>qCe&L}GR3She8Hp@yK9A(Ad^&Z=5weX zs=T@oxE?m_4PX#~kZ(eISr~rE@Wq$)>1)Ml| zHgA<94QH0w(AB0Wf_shYT*g#@sa;I$c1K0LXE>#u>!4y4y*^ZZjUpt&VrG^L4YdW$ zbGNY-Aj%8bdCguPUIDIXeWr*%+XT^P1T^F+?we=yoQf%FyG5zn6!7EJ+s_WJ3OJUy zJ_1S#h|K@_nUbl1(?fB4VqVd3!P?>B#RoJLH5AV-PgF$m<�iQ3_Bl&YfeSt%wQ6 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�F~l(?FZ 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

;?n0c4E39qVBE(jgFIq1y3$cb3 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ⅆ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�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