docs: def make_optimize_action(self, model, session=None, var_list=None, **kwargs):
          """
          Build Optimization action task with Tensorflow optimizer.
  
              :param model: GPflow model.
              :param session: Tensorflow session.
              :param var_list: List of Tensorflow variables to train.
              :param feed_dict: Tensorflow feed_dict dictionary.
              :param kwargs: Extra parameters passed to `make_optimize_tensor`.
              :return: Optimization action.
          """
          if model is None or not isinstance(model, Model):
              raise ValueError('Unknown type passed for optimization.')
          session = model.enquire_session(session)
          feed_dict = kwargs.pop('feed_dict', None)
          feed_dict_update = self._gen_feed_dict(model, feed_dict)
          run_kwargs = {} if feed_dict_update is None else {'feed_dict': feed_dict_update}
          optimizer_tensor = self.make_optimize_tensor(model, session, var_list=var_list, **kwargs)
          opt = Optimization()
          opt.with_optimizer(self)
          opt.with_model(model)
          opt.with_optimizer_tensor(optimizer_tensor)
          opt.with_run_kwargs(**run_kwargs)
          return opt