code: def params_as_tensors(method):
      
      @functools.wraps(method)
      def tensor_mode_wrapper(obj, *args, **kwargs):
          if not isinstance(obj, Parameterized):
              raise GPflowError(
                  'Tensor mode works only for Parameterized object.')
          prev_value = _params_as_tensors_enter(obj, True)
          try:
              result = method(obj, *args, **kwargs)
          finally:
              _params_as_tensors_exit(obj, prev_value)
          return result
      return tensor_mode_wrapper
docs: The `params_as_tensors` decorator converts representation for parameters into
      their unconstrained tensors, and data holders to their data tensors inside
      wrapped function, subject to this function is a member of parameterized object.