code: def plot_model(m, name=""):
      pX = np.linspace(-3, 9, 100)[:, None]
      pY, pYv = m.predict_y(pX)
      plt.plot(X, Y, "x")
      plt.plot(pX, pY)
      if not isinstance(m, gpflow.models.GPR):
          Z = m.inducing_variable.Z.numpy()
          plt.plot(Z, np.zeros_like(Z), "o")
      two_sigma = (2.0 * pYv**0.5)[:, 0]
      plt.fill_between(
          pX[:, 0],
          pY[:, 0] - two_sigma,
          pY[:, 0] + two_sigma,
          alpha=0.15,
      )
      lml = m.maximum_log_likelihood_objective().numpy()
      plt.title("%s (lml = %f)" % (name, lml))
      return lml
  
file_path: GPflow/notebooks/theory/upper_bound.pct.py
imports: import matplotlib.pyplot
  import logging
  import numpy
  import tensorflow
  import gpflow
  from gpflow import set_trainable
  from gpflow.ci_utils import reduce_in_tests
  from gpflow.utilities import print_summary
  from FITCvsVFE import getTrainingTestData
label_desc: Use image node_id 1 for calling a global function with example usage: plot_model(m, name) and returns: lml