code: def test_varying_data() -> None:
      input_dim = 2
      output_dim = 1
  
      N = 5
      X, Y = rng.randn(N, input_dim), rng.randn(N, output_dim)
  
      var_data = (
          tf.Variable(X, shape=[None, input_dim]),
          tf.Variable(Y, shape=[None, output_dim]),
      )
      m = gpflow.models.GPR(
          var_data, gpflow.kernels.SquaredExponential()
      )
  
      lml_func = tf.function(m.log_marginal_likelihood)
      old_lml = lml_func()
  
      new_N = 7
      new_X, new_Y = rng.randn(new_N, input_dim), rng.randn(
          new_N, output_dim
      )
  
      # assign new data:
      for var, new_value in zip(var_data, (new_X, new_Y)):
          var.assign(new_value)
  
      new_lml = lml_func()  # re-use compiled function
  
      assert (
          np.abs((old_lml - new_lml) / (new_lml + old_lml)) > 0.1
      ), "we expect the LML for different data to be significantly different"
  
imports: import numpy
  import tensorflow
  import gpflow
  from gpflow import set_trainable
label_desc: Use image node_id 2 for calling a global function with example usage: test_varying_data() without return types