docstr: Compute the expected log density of the data, given a Gaussian
  distribution for the function values,
  
  i.e. if
      q(f) = N(Fmu, Fvar)
  
  and this object represents
  
      p(y|f)
  
  then this method computes
  
     ∫ log(p(y=Y|f)) q(f) df.
  
  This only works if the broadcasting dimension of the statistics of q(f) (mean and variance)
  are broadcastable with that of the data Y.
  
  :param X: input tensor
  :param Fmu: mean function evaluation tensor
  :param Fvar: variance of function evaluation tensor
  :param Y: observation tensor
  :returns: expected log density of the data given q(F)
docstr_tok: ["Compute","the","expected","log","density","of","the","data",",","given","a","Gaussian","distribution","for","the","function","values",",","i.e",".","if","q","(","f",")","=","N","(","Fmu",",","Fvar",")","and","this","object","represents","p","(","y|f",")","then","this","method","computes","\u222b","log","(","p","(","y=Y|f",")",")","q","(","f",")","df",".","This","only","works","if","the","broadcasting","dimension","of","the","statistics","of","q","(","f",")","(","mean","and","variance",")","are","broadcastable","with","that","of","the","data","Y.",":","param","X",":","input","tensor",":","param","Fmu",":","mean","function","evaluation","tensor",":","param","Fvar",":","variance","of","function","evaluation","tensor",":","param","Y",":","observation","tensor",":","returns",":","expected","log","density","of","the","data","given","q","(","F",")"]
code: def variational_expectations(
      self,
      X: TensorType,
      Fmu: TensorType,
      Fvar: TensorType,
      Y: TensorType,
  ) -> tf.Tensor:
      r"""
      Compute the expected log density of the data, given a Gaussian
      distribution for the function values,
  
      i.e. if
          q(f) = N(Fmu, Fvar)
  
      and this object represents
  
          p(y|f)
  
      then this method computes
  
         ∫ log(p(y=Y|f)) q(f) df.
  
      This only works if the broadcasting dimension of the statistics of q(f) (mean and variance)
      are broadcastable with that of the data Y.
  
      :param X: input tensor
      :param Fmu: mean function evaluation tensor
      :param Fvar: variance of function evaluation tensor
      :param Y: observation tensor
      :returns: expected log density of the data given q(F)
      """
      return self._variational_expectations(X, Fmu, Fvar, 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 12 for calling the Likelihood obj's underlying member method code with example usage: obj.variational_expectations(X, Fmu, Fvar, Y) and returns: self