コード例 #1
0
def run_training(**kwargs):
    from sipga.common.experiment_analysis import EnvironmentEvaluator
    alg = kwargs.pop('alg')
    env_id = kwargs.pop('env_id')
    logger_kwargs = kwargs.pop('logger_kwargs')
    log_dir = logger_kwargs['log_dir']
    learn_fn = utils.get_learn_function(alg)
    evaluator = EnvironmentEvaluator(log_dir=log_dir)

    ac, env = learn_fn(env_id, logger_kwargs=logger_kwargs, **kwargs)
    evaluator.eval(env=env, ac=ac, num_evaluations=32)
 def check_alg(alg_name, env_id):
     """" Run one epoch update with algorithm."""
     print(f'Run {alg_name}.')
     defaults = U.get_defaults_kwargs(alg=alg_name, env_id=env_id)
     defaults['epochs'] = 1
     defaults['num_mini_batches'] = 4
     defaults['steps_per_epoch'] = 1000
     defaults['verbose'] = False
     learn_fn = U.get_learn_function(alg_name)
     defaults['logger_kwargs'] = setup_logger_kwargs(exp_name='unittest',
                                                     seed=None,
                                                     base_dir='/var/tmp/',
                                                     datestamp=True,
                                                     use_tensor_board=True,
                                                     verbose=False)
     return learn_fn(env_id, **defaults)
コード例 #3
0
    def fit(self, epochs=None, env=None):
        """ Train the model for a given number of epochs.

        Parameters
        ----------
        epochs: int
            Number of epoch to train. If None, use the standard setting from the
            defaults.py of the corresponding algorithm.
        env: gym.Env
            provide a custom environment for fitting the model, e.g. pass a
            virtual environment (based on NN approximation)

        Returns
        -------
        None

        """
        assert self.compiled, 'Call model.compile() before model.fit()'

        if self.multi_thread:
            # start all tasks which are stored in the scheduler
            self.scheduler.run()
        else:
            # single thread training
            if epochs is None:
                epochs = self.kwargs.pop('epochs')
            else:
                self.kwargs.pop('epochs')  # pop to avoid double kwargs

            # fit() can also take a custom env, e.g. a virtual environment
            env_id = self.env_id if env is None else env

            learn_func = utils.get_learn_function(self.alg)
            ac, env = learn_func(
                env_id=env_id,
                logger_kwargs=self.logger_kwargs,
                epochs=epochs,
                **self.kwargs
            )
            self.model = ac
            self.env = env
        self.trained = True