code: def generate_data(num_functions=10, N=500):
      """
      For each function, sample the value at `N` equally spaced
      points in the [−5, 5] interval (Fortuin and Rätsch, 2019).
  
      Returns:
          Tuple of np.arrays of size (N, 1) and (N, num_functions).
      """
      jitter = 1e-6
      Xs = np.linspace(-5.0, 5.0, N)[:, None]
      kernel = RBF(lengthscales=1.0)
      cov = kernel(Xs)
      L = np.linalg.cholesky(cov + np.eye(N) * jitter)
      epsilon = np.random.randn(N, num_functions)
      F = np.sin(Xs) + np.matmul(L, epsilon)
      return Xs, F
  
file_path: GPflow/notebooks/tailor/external-mean-function.pct.py
imports: import matplotlib.pyplot
  import numpy
  import tensorflow
  import gpflow
  from gpflow.ci_utils import reduce_in_tests
  from gpflow.kernels import RBF
  from gpflow.models import GPR
  from gpflow.config import default_float
  from gpflow import set_trainable
  import time
label_desc: Use image node_id 1 for calling a global function with example usage: generate_data(num_functions, N) and returns: Xs,  F