def _setup_graph(self, ob_space, ac_space): self.x = tf.placeholder(tf.float32, [None] + list(ob_space.shape)) dist_class, self.logit_dim = ModelCatalog.get_action_dist( ac_space, self.config["model"]) self._model = LSTM(self.x, self.logit_dim, {}) self.state_in = self._model.state_in self.state_out = self._model.state_out self.logits = self._model.outputs self.action_dist = dist_class(self.logits) # with tf.variable_scope("vf"): # vf_model = ModelCatalog.get_model(self.x, 1) self.vf = tf.reshape( linear(self._model.last_layer, 1, "value", normc_initializer(1.0)), [-1]) self.sample = self.action_dist.sample() self.var_list = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, tf.get_variable_scope().name) self.global_step = tf.get_variable("global_step", [], tf.int32, initializer=tf.constant_initializer( 0, dtype=tf.int32), trainable=False)
def get_model(inputs, num_outputs, options=None, state_in=None, seq_lens=None): """Returns a suitable model conforming to given input and output specs. Args: inputs (Tensor): The input tensor to the model. num_outputs (int): The size of the output vector of the model. options (dict): Optional args to pass to the model constructor. state_in (list): Optional RNN state in tensors. seq_in (Tensor): Optional RNN sequence length tensor. Returns: model (Model): Neural network model. """ options = options or {} model = ModelCatalog._get_model(inputs, num_outputs, options, state_in, seq_lens) if options.get("use_lstm"): model = LSTM(model.last_layer, num_outputs, options, state_in, seq_lens) return model
def get_model(input_dict, obs_space, num_outputs, options, state_in=None, seq_lens=None): """Returns a suitable model conforming to given input and output specs. Args: input_dict (dict): Dict of input tensors to the model, including the observation under the "obs" key. obs_space (Space): Observation space of the target gym env. num_outputs (int): The size of the output vector of the model. options (dict): Optional args to pass to the model constructor. state_in (list): Optional RNN state in tensors. seq_in (Tensor): Optional RNN sequence length tensor. Returns: model (Model): Neural network model. """ assert isinstance(input_dict, dict) options = options or MODEL_DEFAULTS model = ModelCatalog._get_model(input_dict, obs_space, num_outputs, options, state_in, seq_lens) if options.get("use_lstm"): copy = dict(input_dict) copy["obs"] = model.last_layer model = LSTM(copy, obs_space, num_outputs, options, state_in, seq_lens) return model
def get_model(input_dict, obs_space, action_space, num_outputs, options, state_in=None, seq_lens=None): """Returns a suitable model conforming to given input and output specs. Args: input_dict (dict): Dict of input tensors to the model, including the observation under the "obs" key. obs_space (Space): Observation space of the target gym env. action_space (Space): Action space of the target gym env. num_outputs (int): The size of the output vector of the model. options (dict): Optional args to pass to the model constructor. state_in (list): Optional RNN state in tensors. seq_lens (Tensor): Optional RNN sequence length tensor. Returns: model (models.Model): Neural network model. """ assert isinstance(input_dict, dict) options = options or MODEL_DEFAULTS model = ModelCatalog._get_model(input_dict, obs_space, action_space, num_outputs, options, state_in, seq_lens) if options.get("use_lstm"): copy = dict(input_dict) copy["obs"] = model.last_layer feature_space = gym.spaces.Box(-1, 1, shape=(model.last_layer.shape[1], )) model = LSTM(copy, feature_space, action_space, num_outputs, options, state_in, seq_lens) logger.debug( "Created model {}: ({} of {}, {}, {}, {}) -> {}, {}".format( model, input_dict, obs_space, action_space, state_in, seq_lens, model.outputs, model.state_out)) model._validate_output_shape() return model
def get_model(input_dict, obs_space, action_space, num_outputs, options, state_in=None, seq_lens=None): """Returns a suitable model conforming to given input and output specs. Args: input_dict (dict): Dict of input tensors to the model, including the observation under the "obs" key. obs_space (Space): Observation space of the target gym env. action_space (Space): Action space of the target gym env. num_outputs (int): The size of the output vector of the model. options (dict): Optional args to pass to the model constructor. state_in (list): Optional RNN state in tensors. seq_lens (Tensor): Optional RNN sequence length tensor. Returns: model (models.Model): Neural network model. """ assert isinstance(input_dict, dict) options = options or MODEL_DEFAULTS model = ModelCatalog._get_model(input_dict, obs_space, action_space, num_outputs, options, state_in, seq_lens) if options.get("use_lstm"): copy = dict(input_dict) copy["obs"] = model.last_layer feature_space = gym.spaces.Box( -1, 1, shape=(model.last_layer.shape[1], )) model = LSTM(copy, feature_space, action_space, num_outputs, options, state_in, seq_lens) logger.debug( "Created model {}: ({} of {}, {}, {}, {}) -> {}, {}".format( model, input_dict, obs_space, action_space, state_in, seq_lens, model.outputs, model.state_out)) model._validate_output_shape() return model