From 7071dff030f2ca540d5fb1483027879d4612f6bd Mon Sep 17 00:00:00 2001 From: Neil Lawrence Date: Thu, 13 Jun 2013 06:38:11 +0100 Subject: [PATCH] Mods to visualize and dimensionality to make stick demos work for summer school. --- GPy/examples/dimensionality_reduction.py | 39 +++++++++++++++++++++--- GPy/util/visualize.py | 5 +-- 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/GPy/examples/dimensionality_reduction.py b/GPy/examples/dimensionality_reduction.py index 28ee2bde..429b38de 100644 --- a/GPy/examples/dimensionality_reduction.py +++ b/GPy/examples/dimensionality_reduction.py @@ -261,6 +261,7 @@ def bgplvm_simulation(optimize='scg', 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.constrain('variance|noise', logexp_clipped()) m.ensure_default_constraints() m['noise'] = Y.var() / 100. @@ -327,28 +328,56 @@ def brendan_faces(): data_show = GPy.util.visualize.image_show(y[None, :], dimensions=(20, 28), transpose=True, invert=False, scale=False) lvm_visualizer = GPy.util.visualize.lvm(m.X[0, :].copy(), m, data_show, ax) raw_input('Press enter to finish') - lvm_visualizer.close() return m +def stick_play(range=None, frame_rate=15): + data = GPy.util.datasets.stick() + # optimize + if range==None: + Y = data['Y'].copy() + else: + Y = data['Y'][range[0]:range[1], :].copy() + y = Y[0, :] + data_show = GPy.util.visualize.stick_show(y[None, :], connect=data['connect']) + GPy.util.visualize.data_play(Y, data_show, frame_rate) + return Y def stick(): data = GPy.util.datasets.stick() - m = GPy.models.GPLVM(data['Y'], 2) - # optimize + m = GPy.models.GPLVM(data['Y'], 2) m.ensure_default_constraints() m.optimize(messages=1, max_f_eval=10000) m._set_params(m._get_params()) - + plt.clf ax = m.plot_latent() y = m.likelihood.Y[0, :] data_show = GPy.util.visualize.stick_show(y[None, :], connect=data['connect']) lvm_visualizer = GPy.util.visualize.lvm(m.X[0, :].copy(), m, data_show, ax) raw_input('Press enter to finish') - lvm_visualizer.close() return m +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) + # optimize + m.ensure_default_constraints() + 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) + m.plot_latent() + y = m.likelihood.Y[0, :].copy() + data_show = GPy.util.visualize.stick_show(y[None, :], connect=data['connect']) + lvm_visualizer = GPy.util.visualize.lvm_dimselect(m.X[0, :].copy(), m, data_show, latent_axes=latent_axes, sense_axes=sense_axes) + raw_input('Press enter to finish') + + return m + + def cmu_mocap(subject='35', motion=['01'], in_place=True): data = GPy.util.datasets.cmu_mocap(subject, motion) diff --git a/GPy/util/visualize.py b/GPy/util/visualize.py index 11730704..8803d6a3 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: """ @@ -203,6 +203,7 @@ class lvm_dimselect(lvm): self.sense_axes = sense_axes self.labels = labels 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" @@ -506,5 +507,5 @@ def data_play(Y, visualizer, frame_rate=30): for y in Y: - visualizer.modify(y) + visualizer.modify(y[None, :]) time.sleep(1./float(frame_rate))