<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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