def test_independent_single_output(register_posterior_test, q_sqrt_factory, whiten, full_cov, full_output_cov): kernel = gpflow.kernels.SquaredExponential() inducing_variable = inducingpoint_wrapper( np.random.randn(NUM_INDUCING_POINTS, INPUT_DIMS)) q_mu = np.random.randn(NUM_INDUCING_POINTS, 1) q_sqrt = q_sqrt_factory(NUM_INDUCING_POINTS, 1) conditional = create_conditional( kernel=kernel, inducing_variable=inducing_variable, q_mu=q_mu, q_sqrt=q_sqrt, whiten=whiten, ) posterior = create_posterior( kernel=kernel, inducing_variable=inducing_variable, q_mu=q_mu, q_sqrt=q_sqrt, whiten=whiten, ) register_posterior_test(posterior, IndependentPosteriorSingleOutput) _assert_fused_predict_f_equals_precomputed_predict_f_and_conditional( posterior, conditional, full_cov, full_output_cov)
def test_linear_coregionalization_shi( register_posterior_test, q_sqrt_factory, full_cov, full_output_cov, whiten, num_latent_gps, output_dims, ): """ Linear coregionalization with shared independent inducing variables. """ kernel = gpflow.kernels.LinearCoregionalization( [gpflow.kernels.SquaredExponential() for _ in range(num_latent_gps)], W=tf.random.normal((output_dims, num_latent_gps)), ) inducing_variable = gpflow.inducing_variables.SharedIndependentInducingVariables( inducingpoint_wrapper(np.random.randn(NUM_INDUCING_POINTS, INPUT_DIMS)) ) q_mu = np.random.randn(NUM_INDUCING_POINTS, num_latent_gps) q_sqrt = q_sqrt_factory(NUM_INDUCING_POINTS, num_latent_gps) conditional = create_conditional( kernel=kernel, inducing_variable=inducing_variable, q_mu=q_mu, q_sqrt=q_sqrt, whiten=whiten, ) posterior = create_posterior( kernel=kernel, inducing_variable=inducing_variable, q_mu=q_mu, q_sqrt=q_sqrt, whiten=whiten, ) register_posterior_test(posterior, LinearCoregionalizationPosterior) _assert_fused_predict_f_equals_precomputed_predict_f_and_conditional( posterior, conditional, full_cov, full_output_cov )
def test_independent_multi_output_sek_shi( register_posterior_test, q_sqrt_factory, full_cov, full_output_cov, whiten, num_latent_gps, output_dims, ): """ Independent multi-output posterior with separate independent kernels and shared inducing points. """ kernel = gpflow.kernels.SeparateIndependent( [gpflow.kernels.SquaredExponential() for _ in range(num_latent_gps)] ) inducing_variable = gpflow.inducing_variables.SharedIndependentInducingVariables( inducingpoint_wrapper(np.random.randn(NUM_INDUCING_POINTS, INPUT_DIMS)) ) q_mu = np.random.randn(NUM_INDUCING_POINTS, num_latent_gps) q_sqrt = q_sqrt_factory(NUM_INDUCING_POINTS, num_latent_gps) conditional = create_conditional( kernel=kernel, inducing_variable=inducing_variable, q_mu=q_mu, q_sqrt=q_sqrt, whiten=whiten, ) posterior = create_posterior( kernel=kernel, inducing_variable=inducing_variable, q_mu=q_mu, q_sqrt=q_sqrt, whiten=whiten, ) register_posterior_test(posterior, IndependentPosteriorMultiOutput) _assert_fused_predict_f_equals_precomputed_predict_f_and_conditional( posterior, conditional, full_cov, full_output_cov )
def test_fallback_independent_multi_output_shi( register_posterior_test, q_sqrt_factory, full_cov, full_output_cov, whiten, output_dims, ): """ Fallback posterior with shared independent inducing variables. The FallbackIndependentLatentPosterior is a subclass of the FullyCorrelatedPosterior which requires a single latent GP function. """ kernel = gpflow.kernels.LinearCoregionalization( [gpflow.kernels.SquaredExponential()], W=tf.random.normal((output_dims, 1)) ) inducing_variable = gpflow.inducing_variables.FallbackSharedIndependentInducingVariables( inducingpoint_wrapper(np.random.randn(NUM_INDUCING_POINTS, INPUT_DIMS)) ) q_mu = np.random.randn(NUM_INDUCING_POINTS, 1) q_sqrt = q_sqrt_factory(NUM_INDUCING_POINTS, 1) conditional = create_conditional( kernel=kernel, inducing_variable=inducing_variable, q_mu=q_mu, q_sqrt=q_sqrt, whiten=whiten, ) posterior = create_posterior( kernel=kernel, inducing_variable=inducing_variable, q_mu=q_mu, q_sqrt=q_sqrt, whiten=whiten, ) register_posterior_test(posterior, FallbackIndependentLatentPosterior) _assert_fused_predict_f_equals_precomputed_predict_f_and_conditional( posterior, conditional, full_cov, full_output_cov )
def test_fully_correlated_multi_output( register_posterior_test, q_sqrt_factory, full_cov, full_output_cov, whiten, output_dims, ): """ The fully correlated posterior has one latent GP. """ kernel = gpflow.kernels.SharedIndependent( gpflow.kernels.SquaredExponential(), output_dim=output_dims ) inducing_variable = inducingpoint_wrapper(np.random.randn(NUM_INDUCING_POINTS, INPUT_DIMS)) q_mu = np.random.randn(output_dims * NUM_INDUCING_POINTS, 1) q_sqrt = q_sqrt_factory(output_dims * NUM_INDUCING_POINTS, 1) conditional = create_conditional( kernel=kernel, inducing_variable=inducing_variable, q_mu=q_mu, q_sqrt=q_sqrt, whiten=whiten, ) posterior = create_posterior( kernel=kernel, inducing_variable=inducing_variable, q_mu=q_mu, q_sqrt=q_sqrt, whiten=whiten, ) register_posterior_test(posterior, FullyCorrelatedPosterior) _assert_fused_predict_f_equals_precomputed_predict_f_and_conditional( posterior, conditional, full_cov, full_output_cov )