docstr: Construct a tf function to compute the likelihood of a general GP
  model.
  
      \log p(Y | V, theta).
docstr_tok: ["Construct","a","tf","function","to","compute","the","likelihood","of","a","general","GP","model",".","\\log","p","(","Y","|","V",",","theta",")","."]
code: def log_likelihood(self) -> tf.Tensor:
      r"""
      Construct a tf function to compute the likelihood of a general GP
      model.
  
          \log p(Y | V, theta).
  
      """
      X_data, Y_data = self.data
      K = self.kernel(X_data)
      L = tf.linalg.cholesky(
          K
          + tf.eye(tf.shape(X_data)[0], dtype=default_float())
          * default_jitter()
      )
      F = tf.linalg.matmul(L, self.V) + self.mean_function(X_data)
  
      return tf.reduce_sum(self.likelihood.log_prob(X_data, F, Y_data))
  
imports: from typing import Optional
  import numpy
  import tensorflow
  import tensorflow_probability
  from check_shapes import check_shapes, inherit_check_shapes
  from ..base import InputData, MeanAndVariance, Parameter, RegressionData
  from ..conditionals import conditional
  from ..config import default_float, default_jitter
  from ..kernels import Kernel
  from ..likelihoods import Likelihood
  from ..mean_functions import MeanFunction
  from ..utilities import assert_params_false, to_default_float
  from .model import GPModel
  from .training_mixins import InternalDataTrainingLossMixin
  from .util import data_input_to_tensor
label_desc: Use image node_id 5 for calling the GPMC obj's underlying member method code with example usage: obj.log_likelihood() and returns: tf