Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
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, )