code: def _kl_compatible_gp(compatible, gp, name):
      with tf.name_scope(name):
          marginal = gp.get_marginal_distribution()
          _assert_kl_compatible(marginal, compatible)
          return kullback_leibler.kl_divergence(compatible, marginal)
  
imports: import functools
  import numpy
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import identity
  from tensorflow_probability.python.bijectors import softplus
  from tensorflow_probability.python.distributions import cholesky_util
  from tensorflow_probability.python.distributions import distribution
  from tensorflow_probability.python.distributions import kullback_leibler
  from tensorflow_probability.python.distributions import mvn_linear_operator
  from tensorflow_probability.python.distributions.internal import stochastic_process_util
  from tensorflow_probability.python.internal import auto_composite_tensor
  from tensorflow_probability.python.internal import batch_shape_lib
  from tensorflow_probability.python.internal import distribution_util
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.internal import nest_util
  from tensorflow_probability.python.internal import parameter_properties
  from tensorflow_probability.python.internal import prefer_static
  from tensorflow_probability.python.internal import reparameterization
  from tensorflow_probability.python.internal import tensor_util
  from tensorflow_probability.python.math import linalg
  from tensorflow.python.util import deprecation
  from tensorflow.python.util import nest
label_desc: Use image node_id 4 for calling a global function with example usage: _kl_compatible_gp(compatible, gp, name) and returns: kullback_leibler