code: def test_variational_expectations(
      likelihood_setup: LikelihoodSetup,
  ) -> None:
      """
      Here we make sure that the variational_expectations gives the same result
      as log_prob if the latent function has no uncertainty.
      """
      likelihood = likelihood_setup.likelihood
      X = Datum.X
      F = Datum.F
      Y = likelihood_setup.Y
      r1 = likelihood.log_prob(X, F, Y)
      r2 = likelihood.variational_expectations(
          X, F, tf.zeros_like(F), Y
      )
      assert_allclose(
          r1, r2, atol=likelihood_setup.atol, rtol=likelihood_setup.rtol
      )
  
imports: from typing import Sequence, Tuple
  import numpy
  import pytest
  import tensorflow
  from numpy.testing import assert_allclose
  import gpflow
  import gpflow.ci_utils
  from gpflow.base import TensorType
  from gpflow.config import default_float, default_int
  from gpflow.likelihoods import HeteroskedasticTFPConditional, Likelihood, MonteCarloLikelihood, MultiLatentLikelihood, MultiLatentTFPConditional, QuadratureLikelihood, ScalarLikelihood, Bernoulli, Beta, Exponential, Gamma, Gaussian, GaussianMC, MultiClass, Ordinal, Poisson, StudentT
label_desc: Use image node_id 5 for calling a global function with example usage: test_variational_expectations(likelihood_setup) without return types