docstr: Here, we implement a default Gauss-Hermite quadrature routine, but some
  likelihoods (Gaussian, Poisson) will implement specific cases.
  :param X: input tensor
  :param Fmu: mean function evaluation tensor
  :param Fvar: variance of function evaluation tensor
  :param Y: observation tensor
  :returns: variational expectations
docstr_tok: ["Here",",","we","implement","a","default","Gauss-Hermite","quadrature","routine",",","but","some","likelihoods","(","Gaussian",",","Poisson",")","will","implement","specific","cases",".",":","param","X",":","input","tensor",":","param","Fmu",":","mean","function","evaluation","tensor",":","param","Fvar",":","variance","of","function","evaluation","tensor",":","param","Y",":","observation","tensor",":","returns",":","variational","expectations"]
code: def _variational_expectations(
      self,
      X: TensorType,
      Fmu: TensorType,
      Fvar: TensorType,
      Y: TensorType,
  ) -> tf.Tensor:
      r"""
      Here, we implement a default Gauss-Hermite quadrature routine, but some
      likelihoods (Gaussian, Poisson) will implement specific cases.
      :param X: input tensor
      :param Fmu: mean function evaluation tensor
      :param Fvar: variance of function evaluation tensor
      :param Y: observation tensor
      :returns: variational expectations
      """
      return self._quadrature_reduction(
          self.quadrature(
              self._quadrature_log_prob, Fmu, Fvar, X=X, Y=Y
          )
      )
  
imports: import abc
  from typing import Any, Callable, Iterable, Optional, Sequence, Union
  import tensorflow
  from check_shapes import check_shapes, inherit_check_shapes
  from ..base import MeanAndVariance, Module, TensorType
  from ..quadrature import GaussianQuadrature, NDiagGHQuadrature, ndiag_mc
label_desc: Use image node_id 6 for calling the QuadratureLikelihood obj's underlying member method code with example usage: obj._variational_expectations(X, Fmu, Fvar, Y) and returns: self