Exemplo n.º 1
0
def general_prepare(self):
    Y = np.random.randn(self.T, self.D)
    inputs = np.random.randn(self.T -
                             1, self.input_dim) if self.input_dim > 0 else None
    Q_diag = np.random.randn(self.E)**2.
    kern = [
        gp.kernels.RBF(self.E + self.input_dim, ARD=True)
        for _ in range(self.E)
    ]
    for k in kern:
        k.lengthscales = np.random.rand(self.E + self.input_dim) * 2.
    for k in kern:
        k.variance = np.random.rand()
    Z = np.random.randn(self.E, self.n_ind_pts, self.E + self.input_dim)
    mean_fn = mean_fns.Linear(np.random.randn(self.E, self.E),
                              np.random.randn(self.E))
    Umu = np.random.randn(self.E, self.n_ind_pts)
    Ucov_chol = np.random.randn(self.E, self.n_ind_pts, self.n_ind_pts)
    Ucov_chol = np.linalg.cholesky(
        np.matmul(Ucov_chol, np.transpose(Ucov_chol, [0, 2, 1])))
    qx1_mu = np.random.randn(self.E)
    qx1_cov = np.random.randn(self.E, self.E)
    qx1_cov = qx1_cov @ qx1_cov.T
    As = np.random.randn(self.T - 1, self.E)
    bs = np.random.randn(self.T - 1, self.E)
    Ss = np.random.randn(self.T - 1, self.E)**2.
    m = GPSSM(self.E,
              Y,
              inputs=inputs,
              emissions=None,
              px1_mu=None,
              px1_cov=None,
              kern=kern,
              Z=Z,
              n_ind_pts=None,
              mean_fn=mean_fn,
              Q_diag=Q_diag,
              Umu=Umu,
              Ucov_chol=Ucov_chol,
              qx1_mu=qx1_mu,
              qx1_cov=qx1_cov,
              As=As,
              bs=bs,
              Ss=Ss,
              n_samples=self.n_samples,
              seed=self.seed)
    _ = m.compute_log_likelihood()
    return m
Exemplo n.º 2
0
def lin_mean():
    return mean_functions.Linear(A=rng.randn(Data.D_in, Data.D_out), b=rng.randn(Data.D_out))
Exemplo n.º 3
0
Xcov = ctt(Xcov @ np.transpose(Xcov, (0, 2, 1)))
Z = rng.randn(num_ind, D_in)


def markov_gauss():
    cov_params = rng.randn(num_data + 1, D_in, 2 * D_in) / 2.0  # (N+1)xDx2D
    Xcov = cov_params @ np.transpose(cov_params, (0, 2, 1))  # (N+1)xDxD
    Xcross = cov_params[:-1] @ np.transpose(cov_params[1:], (0, 2, 1))  # NxDxD
    Xcross = np.concatenate((Xcross, np.zeros((1, D_in, D_in))),
                            0)  # (N+1)xDxD
    Xcov = np.stack([Xcov, Xcross])  # 2x(N+1)xDxD
    return MarkovGaussian(Xmu_markov, ctt(Xcov))


_means = {
    "lin": mf.Linear(A=rng.randn(D_in, D_out), b=rng.randn(D_out)),
    "identity": mf.Identity(input_dim=D_in),
    "const": mf.Constant(c=rng.randn(D_out)),
    "zero": mf.Zero(output_dim=D_out),
}

_distrs = {
    "gauss":
    Gaussian(Xmu, Xcov),
    "dirac_gauss":
    Gaussian(Xmu, np.zeros((num_data, D_in, D_in))),
    "gauss_diag":
    DiagonalGaussian(Xmu, rng.rand(num_data, D_in)),
    "dirac_diag":
    DiagonalGaussian(Xmu, np.zeros((num_data, D_in))),
    "dirac_markov_gauss":
Exemplo n.º 4
0
def lin():
    return mean_functions.Linear(rng.rand(Data.D_in, Data.D_out), rng.rand(Data.D_out))
Exemplo n.º 5
0
class Data:
    rng = np.random.RandomState(1)
    num_data = 5
    num_ind = 4
    D_in = 2
    D_out = 2

    Xmu = rng.randn(num_data, D_in)
    L = gen_L(rng, num_data, D_in, D_in)
    Xvar = np.array([l @ l.T for l in L])
    Z = rng.randn(num_ind, D_in)

    # distributions don't need to be compiled (No Parameter objects)
    # but the members should be Tensors created in the same graph
    graph = tf.Graph()
    with test_util.session_context(graph) as sess:
        gauss = Gaussian(tf.constant(Xmu), tf.constant(Xvar))
        dirac = Gaussian(tf.constant(Xmu),
                         tf.constant(np.zeros((num_data, D_in, D_in))))
        gauss_diag = DiagonalGaussian(tf.constant(Xmu),
                                      tf.constant(rng.rand(num_data, D_in)))
        dirac_diag = DiagonalGaussian(tf.constant(Xmu),
                                      tf.constant(np.zeros((num_data, D_in))))
        dirac_markov_gauss = MarkovGaussian(
            tf.constant(Xmu), tf.constant(np.zeros((2, num_data, D_in, D_in))))

        # create the covariance for the pairwise markov-gaussian
        dummy_gen = lambda rng, n, *shape: np.array(
            [rng.randn(*shape) for _ in range(n)])
        L_mg = dummy_gen(rng, num_data, D_in, 2 * D_in)  # N+1 x D x 2D
        LL = np.concatenate((L_mg[:-1], L_mg[1:]), 1)  # N x 2D x 2D
        Xcov = LL @ np.transpose(LL, (0, 2, 1))
        Xc = np.concatenate((Xcov[:, :D_in, :D_in], Xcov[-1:, D_in:, D_in:]),
                            0)  # N+1 x D x D
        Xcross = np.concatenate(
            (Xcov[:, :D_in, D_in:], np.zeros(
                (1, D_in, D_in))), 0)  # N+1 x D x D
        Xcc = np.stack([Xc, Xcross])  # 2 x N+1 x D x D

        markov_gauss = MarkovGaussian(Xmu, Xcc)

    with gpflow.decors.defer_build():
        # features
        ip = features.InducingPoints(Z)
        # kernels
        rbf_prod_seperate_dims = kernels.Product([
            kernels.RBF(1,
                        variance=rng.rand(),
                        lengthscales=rng.rand(),
                        active_dims=[0]),
            kernels.RBF(1,
                        variance=rng.rand(),
                        lengthscales=rng.rand(),
                        active_dims=[1])
        ])

        rbf_lin_sum = kernels.Sum([
            kernels.RBF(D_in, variance=rng.rand(), lengthscales=rng.rand()),
            kernels.RBF(D_in, variance=rng.rand(), lengthscales=rng.rand()),
            kernels.Linear(D_in, variance=rng.rand())
        ])

        rbf = kernels.RBF(D_in, variance=rng.rand(), lengthscales=rng.rand())

        lin_kern = kernels.Linear(D_in, variance=rng.rand())

        # mean functions
        lin = mean_functions.Linear(rng.rand(D_in, D_out), rng.rand(D_out))
        iden = mean_functions.Identity(
            D_in)  # Note: Identity can only be used if Din == Dout
        zero = mean_functions.Zero(output_dim=D_out)
        const = mean_functions.Constant(rng.rand(D_out))