code: def sgpr_and_svgp(
      data: Tuple[tf.Tensor, tf.Tensor],
      inducing_variable: tf.Tensor,
      kernel: Kernel,
      likelihood: Likelihood,
  ) -> Tuple[SGPR, SVGP]:
      svgp = SVGP(kernel, likelihood, inducing_variable)
      sgpr = SGPR(data, kernel, inducing_variable=inducing_variable)
      sgpr.likelihood.variance.assign(Setup.likelihood_variance)
      set_trainable(svgp, False)
      set_trainable(svgp.q_mu, True)
      set_trainable(svgp.q_sqrt, True)
      return sgpr, svgp
  
imports: from typing import Any, Optional, Tuple
  import numpy
  import pytest
  import tensorflow
  from check_shapes import check_shapes
  import gpflow
  from gpflow import set_trainable
  from gpflow.config import default_float
  from gpflow.kernels import Kernel, SquaredExponential
  from gpflow.likelihoods import Gaussian, Likelihood
  from gpflow.models import GPR, SGPR, SVGP, VGP, BayesianModel
  from gpflow.optimizers import NaturalGradient
label_desc: Use image node_id 6 for calling a global function with example usage: sgpr_and_svgp(data, inducing_variable, kernel, likelihood) and returns: sgpr,  svgp