<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_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