示例#1
0
    def __init__(
        self, states, actions, max_episode_timesteps=None, parallel_interactions=1, config=None,
        recorder=None
    ):
        util.overwrite_staticmethod(obj=self, function='create')
        util.overwrite_staticmethod(obj=self, function='load')

        # Check whether spec attribute exists
        if not hasattr(self, 'spec'):
            raise TensorforceError.required_attribute(name='Agent', attribute='spec')

        # Tensorforce config
        if config is None:
            config = dict()
        self.config = TensorforceConfig(**config)

        # TensorFlow logging
        tf.get_logger().setLevel(self.config.tf_log_level)

        # TensorFlow eager mode
        if self.config.eager_mode:
            tf.config.run_functions_eagerly(run_eagerly=True)

        # Random seed
        if self.config.seed is not None:
            random.seed(a=self.config.seed)
            np.random.seed(seed=self.config.seed)
            tf.random.set_seed(seed=self.config.seed)

        super().__init__(
            fn_act=None, states=states, actions=actions,
            max_episode_timesteps=max_episode_timesteps,
            parallel_interactions=parallel_interactions, recorder=recorder
        )
示例#2
0
 def __init__(self):
     # first two arguments, if applicable: level, visualize=False
     util.overwrite_staticmethod(obj=self, function='create')
     self._expect_receive = None
     self._actions = None
     self._reset_output_check = True
     self._execute_output_check = True
示例#3
0
    def __init__(self,
                 states,
                 actions,
                 max_episode_timesteps=None,
                 parallel_interactions=1,
                 config=None,
                 recorder=None):
        util.overwrite_staticmethod(obj=self, function='create')
        util.overwrite_staticmethod(obj=self, function='load')

        # Check whether spec attribute exists
        if not hasattr(self, 'spec'):
            raise TensorforceError.required_attribute(name='Agent',
                                                      attribute='spec')

        # Tensorforce config
        if config is None:
            config = dict()
        self.config = TensorforceConfig(**config)

        os.environ['TF_CPP_MIN_LOG_LEVEL'] = str(self.config.tf_log_level)

        # Import tensorflow after setting log level
        import tensorflow as tf

        # Eager mode
        if self.config.eager_mode:
            tf.config.experimental_run_functions_eagerly(run_eagerly=True)

        # Random seed
        if self.config.seed is not None:
            random.seed(a=self.config.seed)
            np.random.seed(seed=self.config.seed)
            tf.random.set_seed(seed=self.config.seed)

        super().__init__(fn_act=None,
                         states=states,
                         actions=actions,
                         max_episode_timesteps=max_episode_timesteps,
                         parallel_interactions=parallel_interactions,
                         recorder=recorder)
示例#4
0
    def __init__(
        self, states, actions, max_episode_timesteps=None, parallel_interactions=1, config=None,
        recorder=None
    ):
        util.overwrite_staticmethod(obj=self, function='create')
        util.overwrite_staticmethod(obj=self, function='load')

        self.is_initialized = False

        # Check whether spec attribute exists
        if not hasattr(self, 'spec'):
            raise TensorforceError.required_attribute(name='Agent', attribute='spec')

        # States/actions, plus single state/action flag
        if 'shape' in states:
            self.states_spec = dict(state=states)
            self.single_state = True
        else:
            self.states_spec = states
            self.single_state = False
        if 'type' in actions:
            self.actions_spec = dict(action=actions)
            self.single_action = True
        else:
            self.actions_spec = actions
            self.single_action = False

        # Max episode timesteps
        self.max_episode_timesteps = max_episode_timesteps

        # Parallel interactions
        if isinstance(parallel_interactions, int):
            if parallel_interactions <= 0:
                raise TensorforceError.value(
                    name='Agent', argument='parallel_interactions', value=parallel_interactions,
                    hint='<= 0'
                )
            self.parallel_interactions = parallel_interactions
        else:
            raise TensorforceError.type(
                name='Agent', argument='parallel_interactions', dtype=type(parallel_interactions)
            )

        # Config
        if config is None:
            config = dict()
        self.config = TensorforceConfig(**config)

        os.environ['TF_CPP_MIN_LOG_LEVEL'] = str(self.config.tf_log_level)

        # Import tensorflow after setting log level
        import tensorflow as tf

        # Eager mode
        if self.config.eager_mode:
            tf.config.experimental_run_functions_eagerly(run_eagerly=True)

        # Random seed
        if self.config.seed is not None:
            random.seed(a=self.config.seed)
            np.random.seed(seed=self.config.seed)
            tf.random.set_seed(seed=self.config.seed)

        # Recorder
        if recorder is None:
            pass
        elif not all(key in ('directory', 'frequency', 'max-traces', 'start') for key in recorder):
            raise TensorforceError.value(
                name='Agent', argument='recorder values', value=list(recorder),
                hint='not from {directory,frequency,max-traces,start}'
            )
        self.recorder_spec = recorder if recorder is None else dict(recorder)
示例#5
0
 def __init__(self):
     # first two arguments, if applicable: level, visualize=False
     util.overwrite_staticmethod(obj=self, function='create')
     self._max_episode_timesteps = None
     self._expect_receive = None
     self._actions = None