def eval_at_state(self): model_input = ModelInput() model_input.state = self.preprocess_frame( self.episode.state_for_agent()) model_input.hidden = self.hidden model_output = self.model.forward(model_input) return model_output
def eval_at_state(self): model_input = ModelInput() model_input.state = self.preprocess_frame( self.episode.state_for_agent()) model_input.hidden = self.hidden model_input.additional_state_info = gpuify( torch.Tensor(self.info[1]).unsqueeze(0), self.gpu_id) model_output = self.model.forward(model_input) return model_output
def eval_at_state(self): model_input = ModelInput() model_input.state = self.preprocess_frame( self.episode.state_for_agent()) model_input.hidden = self.hidden ## add 'augState' as additional_state_info list to 'model_input' container model_input.additional_state_info = self.augState print( 'eval_at_state agent.py ..printing model_input.additional_state_info tensor..', model_input.additional_state_info.data[0]) model_output = self.model.forward(model_input) return model_output
def eval_at_state(self): episode_actions_taken = set( [a['action'] for a in self.episode.actions_taken]) extra_state = [ 1. if 'Seen' + t in episode_actions_taken else 0. for t in self.episode.targets ] extra_state = torch.tensor(extra_state).unsqueeze(0) if self.gpu_id >= 0: with torch.cuda.device(self.gpu_id): extra_state = extra_state.cuda() model_input = ModelInput() model_input.state = self.preprocess_frame( self.episode.state_for_agent()) model_input.extra_state = extra_state model_input.hidden = self.hidden model_output = self.model.forward(model_input) return model_output
def instantiate_model(mode, config, data_set): """ Instantiates the model with the given configuration and data. :param mode: Mode enum specifying train/test/validation. :param config: :param data_set: a tf.data.dataset :return: model, summary operation """ name = Mode.to_string(mode) initializer = tf.random_uniform_initializer(-config.init_scale, config.init_scale) with tf.name_scope(name=name): model_input = ModelInput(config=config, data=data_set) with tf.variable_scope("Model", reuse=tf.AUTO_REUSE, initializer=initializer): model = SeqModel(is_training=(mode == Mode.train), config=config, dataset=model_input) summary = tf.summary.scalar(name + " Loss", model.normalized_cost) if mode == Mode.train: summ_lr = tf.summary.scalar("Learning Rate", model.config.learning_rate) summary = tf.summary.merge([summary, summ_lr]) summ_layers = tf.summary.scalar("Layers", model.config.num_layers) summ_bs = tf.summary.scalar("Batch Size", model.config.batch_size) summ_grad_norm = tf.summary.scalar("Gradient Norm", model.config.max_grad_norm) summ_keep_prob = tf.summary.scalar("Dropout Keep Probability", model.config.keep_prob) summ_hidden_size = tf.summary.scalar("State Size", model.config.hidden_size) summary = tf.summary.merge([ summary, summ_layers, summ_bs, summ_grad_norm, summ_keep_prob, summ_hidden_size ]) return model, summary
def main(): model = Model() # # model.setup(155, base_stats_by_attr, # {'AP': 10, 'MP': 5, 'Range': 5, 'Agility': 134, 'Critical Hits': 45}, # {}, set(), objective_values_2, options) # model.run() # print model.get_result_string() model.setup( ModelInput(73, base_stats_by_attr_case2, { 'AP': 10, 'MP': 4, 'Range': 2, 'Summon': 1 }, {}, set(['Dofusteuse', 'Vulbis Dofus']), { key: 2 * value for (key, value) in objective_values_3.iteritems() }, options_caso2)) model.run(1) print model.get_result_string()