code: def test_no_uncertainty(white: bool, mean: Optional[str]) -> None:
      mean_function = mean_function_factory(mean, Data.D_in, Data.D_out)
      kernel = gpflow.kernels.SquaredExponential(variance=rng.rand())
      model = MomentMatchingSVGP(
          kernel,
          gpflow.likelihoods.Gaussian(),
          num_latent_gps=Data.D_out,
          mean_function=mean_function,
          inducing_variable=Data.X.copy(),
          whiten=white,
      )
      model.full_output_cov = False
  
      training_loop(
          model.training_loss_closure(Data.data),
          optimizer=tf.optimizers.Adam(),
          var_list=model.trainable_variables,
          maxiter=100,
          compile=True,
      )
  
      mean1, var1 = model.predict_f(Data.Xnew_mu)
      mean2, var2 = model.uncertain_predict_f_moment_matching(
          *map(tf.convert_to_tensor, [Data.Xnew_mu, Data.Xnew_covar])
      )
  
      assert_allclose(mean1, mean2)
      for n in range(Data.N_new):
          assert_allclose(var1[n, :], var2[n, ...])
  
imports: from typing import Collection, Optional
  import numpy
  import pytest
  import tensorflow
  from check_shapes import ShapeChecker, check_shapes
  from numpy.testing import assert_allclose
  import gpflow
  from gpflow.base import AnyNDArray, MeanAndVariance
  from gpflow.conditionals import conditional, uncertain_conditional
  from gpflow.config import default_float
  from gpflow.mean_functions import Constant, Linear, MeanFunction, Zero
  from gpflow.quadrature import mvnquad
  from gpflow.utilities import training_loop
label_desc: Use image node_id 4 for calling a global function with example usage: test_no_uncertainty(white, mean) without return types