#scale data X_train = X_train/255.0 X_train = X_train*2. - 1. X_test = X_test/255.0 X_test = X_test*2. - 1. #randomize order i = np.random.permutation(X_train.shape[0]) i = i[:ndata] X_train, Y_train = X_train[i,:], Y_train[i,:] #load vb model, create mcmc model, init mc v=from vb m_vb = GPy.load(vb_filename) k = GPy.kern.RBF(X_train.shape[1], ARD=True) + GPy.kern.White(1, 1e-3) lik = Multiclass() m = mcmcGP.SGPMCMC(X=X_train, Y=Y_train, kernel=k.copy(), likelihood=lik.copy(), num_latent_functions=10, Z=m_vb.Z*1) m.update_model(False) m.kern[:] = m_vb.kern[:]*1 m.Z.fix() m.kern.fix() L = GPy.util.choleskies.flat_to_triang(m_vb.q_u_chol) U = np.vstack([np.dot(L[i,:,:], np.random.randn(m.V.shape[0])) for i in range(10)]).T U = U + m_vb.q_u_mean K = m.kern.K(m.Z) L = GPy.util.linalg.jitchol(K) m.V[:] = GPy.util.linalg.dtrtrs(L, U)[0] m.likelihood.fix(1e-3) m.update_model(True)
#scale data X_train = X_train / 255.0 X_train = X_train * 2. - 1. X_test = X_test / 255.0 X_test = X_test * 2. - 1. #randomize order i = np.random.permutation(X_train.shape[0]) i = i[:ndata] X_train, Y_train = X_train[i, :], Y_train[i, :] #load vb model, create mcmc model, init mc v=from vb m_vb = GPy.load(vb_filename) k = GPy.kern.RBF(X_train.shape[1], ARD=True) + GPy.kern.White(1, 1e-3) lik = Multiclass() m = mcmcGP.SGPMCMC(X=X_train, Y=Y_train, kernel=k.copy(), likelihood=lik.copy(), num_latent_functions=10, Z=m_vb.Z * 1) m.update_model(False) m.kern[:] = m_vb.kern[:] * 1 m.Z.fix() m.kern.fix() L = GPy.util.choleskies.flat_to_triang(m_vb.q_u_chol) U = np.vstack( [np.dot(L[i, :, :], np.random.randn(m.V.shape[0])) for i in range(10)]).T U = U + m_vb.q_u_mean K = m.kern.K(m.Z)
# randomize order i = np.random.permutation(X_train.shape[0]) i = i[:ndata] X_train, Y_train = X_train[i, :], Y_train[i, :] # obtain k-mean centers for Z init from scipy.cluster.vq import kmeans Z, _ = kmeans(X_train[::20, :], num_inducing) stop # build vb model k = GPy.kern.RBF(X_train.shape[1], ARD=True) + GPy.kern.White(1, 1e-3) lik = Multiclass() m_vb = GPy.core.SVGP( X=X_train, Y=Y_train, kernel=k.copy(), likelihood=lik.copy(), num_latent_functions=10, Z=Z, batchsize=vb_batchsize ) m = mcmcGP.SGPMCMC(X=X_train, Y=Y_train, kernel=k.copy(), likelihood=lik.copy(), num_latent_functions=10, Z=Z) m_vb.likelihood.delta.fix(1e-3) m.likelihood.delta.fix(1e-3) # set a prior # pr = GPy.priors.Gamma(3,3) # m_vb.kern.set_prior(pr) pr = GPy.priors.Gamma(3, 3) m.kern.set_prior(pr) # optimize vb m_vb.Z.fix()