docs: def make_optimize_tensor(self, model, session=None, var_list=None, **kwargs):
          """
          Make SciPy optimization tensor.
          The `make_optimize_tensor` method builds optimization tensor and initializes
          all necessary variables created by optimizer.
  
              :param model: GPflow model.
              :param session: Tensorflow session.
              :param var_list: List of variables for training.
              :param kwargs: Scipy optional optimization parameters,
                  - `maxiter`, maximal number of iterations to perform.
                  - `disp`, if True, prints convergence messages.
              :return: Tensorflow operation.
          """
          session = model.enquire_session(session)
          with session.as_default():
              var_list = self._gen_var_list(model, var_list)
              optimizer_kwargs = self._optimizer_kwargs.copy()
              options = optimizer_kwargs.get('options', {})
              options.update(kwargs)
              optimizer_kwargs.update(dict(options=options))
              objective = model.objective
              optimizer = external_optimizer.ScipyOptimizerInterface(
                  objective, var_list=var_list, **optimizer_kwargs)
              model.initialize(session=session)
              return optimizer