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