def gplvm_simulation( optimize=True, verbose=1, plot=True, plot_sim=False, max_iters=2e4, ): from GPy import kern from GPy.models import GPLVM D1, D2, D3, N, num_inducing, Q = 13, 5, 8, 45, 3, 9 _, _, Ylist = _simulate_matern(D1, D2, D3, N, num_inducing, plot_sim) Y = Ylist[0] k = kern.Linear(Q, ARD=True) # + kern.white(Q, _np.exp(-2)) # + kern.bias(Q) # k = kern.RBF(Q, ARD=True, lengthscale=10.) m = GPLVM(Y, Q, init="PCA", kernel=k) m.likelihood.variance = .1 if optimize: print("Optimizing model:") m.optimize('bfgs', messages=verbose, max_iters=max_iters, gtol=.05) if plot: m.X.plot("BGPLVM Latent Space 1D") m.kern.plot_ARD() return m
def __init__(self, Y, input_dim, seq_index, init='PCA', X=None, kernel=None, normalize_Y=False, sigma=0.5, mapping=None, class_index=None): self.sigma = float(sigma) self.seq_index = seq_index self.class_index = class_index self.labels = seq_index2labels(class_index) if mapping == None: GPLVM.__init__(self, Y, input_dim, init, X, kernel, normalize_Y) #SparseGPLVM.__init__(self, Y, input_dim, kernel=kernel, init=init, num_inducing=20) else: print "Using: back-constraints" BCGPLVM.__init__(self, Y, input_dim, kernel=kernel, mapping=mapping, X=X)
def test_gplvm(): from GPy.models import GPLVM np.random.seed(12345) matplotlib.rcParams.update(matplotlib.rcParamsDefault) #matplotlib.rcParams[u'figure.figsize'] = (4,3) matplotlib.rcParams[u'text.usetex'] = False #Q = 3 # Define dataset #N = 60 #k1 = GPy.kern.RBF(5, variance=1, lengthscale=1./np.random.dirichlet(np.r_[10,10,10,0.1,0.1]), ARD=True) #k2 = GPy.kern.RBF(5, variance=1, lengthscale=1./np.random.dirichlet(np.r_[10,0.1,10,0.1,10]), ARD=True) #k3 = GPy.kern.RBF(5, variance=1, lengthscale=1./np.random.dirichlet(np.r_[0.1,0.1,10,10,10]), ARD=True) #X = np.random.normal(0, 1, (N, 5)) #A = np.random.multivariate_normal(np.zeros(N), k1.K(X), Q).T #B = np.random.multivariate_normal(np.zeros(N), k2.K(X), Q).T #C = np.random.multivariate_normal(np.zeros(N), k3.K(X), Q).T #Y = np.vstack((A,B,C)) #labels = np.hstack((np.zeros(A.shape[0]), np.ones(B.shape[0]), np.ones(C.shape[0])*2)) #k = RBF(Q, ARD=True, lengthscale=2) # + kern.white(Q, _np.exp(-2)) # + kern.bias(Q) pars = np.load(os.path.join(basedir, 'b-gplvm-save.npz')) Y = pars['Y'] Q = pars['Q'] labels = pars['labels'] import warnings with warnings.catch_warnings(record=True) as w: warnings.simplefilter('always') # always print m = GPLVM(Y, Q, initialize=False) m.update_model(False) m.initialize_parameter() m[:] = pars['gplvm_p'] m.update_model(True) #m.optimize(messages=0) np.random.seed(111) m.plot_latent(labels=labels) np.random.seed(111) m.plot_scatter(projection='3d', labels=labels) np.random.seed(111) m.plot_magnification(labels=labels) m.plot_steepest_gradient_map(resolution=10, data_labels=labels) for do_test in _image_comparison(baseline_images=[ 'gplvm_{}'.format(sub) for sub in ["latent", "latent_3d", "magnification", 'gradient'] ], extensions=extensions, tol=12): yield (do_test, )