Exemplo n.º 1
0
    def __init__(self, obs_space, action_space, num_outputs, model_config,
                 name):
        TorchModelV2.__init__(self, obs_space, action_space, num_outputs,
                              model_config, name)
        nn.Module.__init__(self)

        self.action_model = TorchFC(
            Box(low=0, high=1, shape=(6, )),  # one-hot encoded Discrete(6)
            action_space,
            num_outputs,
            model_config,
            name + "_action")

        self.value_model = TorchFC(obs_space, action_space, 1, model_config,
                                   name + "_vf")
Exemplo n.º 2
0
    def __init__(
        self,
        obs_space,
        action_space,
        num_outputs,
        model_config,
        name,
        **kwargs,
    ):
        orig_space = getattr(obs_space, "original_space", obs_space)
        assert (isinstance(orig_space, Dict)
                and "action_mask" in orig_space.spaces
                and "observations" in orig_space.spaces)

        TorchModelV2.__init__(self, obs_space, action_space, num_outputs,
                              model_config, name, **kwargs)
        nn.Module.__init__(self)

        self.internal_model = TorchFC(
            orig_space["observations"],
            action_space,
            num_outputs,
            model_config,
            name + "_internal",
        )

        # disable action masking --> will likely lead to invalid actions
        self.no_masking = False
        if "no_masking" in model_config["custom_model_config"]:
            self.no_masking = model_config["custom_model_config"]["no_masking"]
Exemplo n.º 3
0
    def __init__(self, obs_space, action_space, num_outputs, model_config,
                 name):
        TorchModelV2.__init__(self, custom_input_space, action_space,
                              num_outputs, model_config, name)
        nn.Module.__init__(self)

        self.torch_sub_model = TorchFC(custom_input_space, action_space,
                                       num_outputs, model_config, name)
        prev_safe_layer_size = int(np.product(custom_input_space.shape))
        vf_layers = []
        activation = model_config.get("fcnet_activation")
        hiddens = [32]
        for size in hiddens:
            vf_layers.append(
                SlimFC(in_size=prev_safe_layer_size,
                       out_size=size,
                       activation_fn=activation,
                       initializer=normc_initializer(1.0)))
            prev_safe_layer_size = size
        vf_layers.append(
            SlimFC(in_size=prev_safe_layer_size,
                   out_size=1,
                   initializer=normc_initializer(0.01),
                   activation_fn=None))
        self.safe_branch_separate = nn.Sequential(*vf_layers)
        self.last_in = None
Exemplo n.º 4
0
 def __init__(self, obs_space, action_space, num_outputs, model_config,
              name):
     TorchModelV2.__init__(self, obs_space, action_space, num_outputs,
                           model_config, name)
     nn.Module.__init__(self)
     true_obs_space = Box(low=0, high=1, shape=(266, ), dtype=int)
     self.action_model = TorchFC(true_obs_space, action_space, num_outputs,
                                 model_config, name)
Exemplo n.º 5
0
    def __init__(self, obs_space, action_space, num_outputs, model_config,
                 name):
        TorchModelV2.__init__(self, obs_space, action_space, num_outputs,
                              model_config, name)
        nn.Module.__init__(self)

        self.torch_sub_model = TorchFC(obs_space, action_space, num_outputs,
                                       model_config, name)
Exemplo n.º 6
0
    def __init__(self, obs_space, action_space, num_outputs, model_config,
                 name):
        print(f'CUDA {torch.cuda.is_available()}')
        TorchModelV2.__init__(self, obs_space, action_space, num_outputs,
                              model_config, name)
        nn.Module.__init__(self)

        self.torch_sub_model = TorchFC(obs_space, action_space, num_outputs,
                                       model_config, name)
Exemplo n.º 7
0
 def __init__(self, obs_space, action_space, num_outputs, model_config,
              name, **kwargs):
     DQNTorchModel.__init__(self, obs_space, action_space, num_outputs,
                            model_config, name, **kwargs)
     true_obs_space = Box(low=0,
                          high=1,
                          shape=obs_space.original_space["state"].shape,
                          dtype=int)
     self.action_model = TorchFC(true_obs_space, action_space, num_outputs,
                                 model_config, name)
Exemplo n.º 8
0
 def __init__(self, obs_space, action_space, num_outputs, model_config,
              name):
     TorchModelV2.__init__(self, obs_space, action_space, num_outputs,
                           model_config, name)
     nn.Module.__init__(self)
     true_obs_space = Box(low=0.0,
                          high=55.0,
                          shape=(100, ),
                          dtype=np.float32)
     self.torch_sub_model = TorchFC(true_obs_space, action_space,
                                    num_outputs, model_config, name)
Exemplo n.º 9
0
    def __init__(self, obs_space, action_space, num_outputs, model_config,
                 name):
        TorchModelV2.__init__(self, obs_space, action_space, num_outputs,
                              model_config, name)
        nn.Module.__init__(self)

        self.torch_sub_model = TorchFC(custom_input_space, action_space,
                                       num_outputs, model_config, name)
        self.torch_sub_model._logits = torch.nn.Sequential(
            self.torch_sub_model._logits,
            torch.nn.Hardtanh(min_val=-3, max_val=3))
Exemplo n.º 10
0
    def __init__(
        self, obs_space, action_space, num_outputs, model_config, name, input_files
    ):
        super().__init__(obs_space, action_space, num_outputs, model_config, name)
        nn.Module.__init__(self)

        self.input_files = input_files
        # Create a new input reader per worker.
        self.reader = JsonReader(self.input_files)
        self.fcnet = TorchFC(
            self.obs_space, self.action_space, num_outputs, model_config, name="fcnet"
        )
Exemplo n.º 11
0
    def __init__(self, obs_space, action_space, num_outputs, model_config,
                 name, **kw):
        DQNTorchModel.__init__(self, obs_space, action_space, num_outputs,
                               model_config, name, **kw)

        obs_len = obs_space.shape[0] - action_space.n

        orig_obs_space = Box(shape=(obs_len, ),
                             low=obs_space.low[:obs_len],
                             high=obs_space.high[:obs_len])
        self.action_embed_model = TorchFC(orig_obs_space, action_space,
                                          action_space.n, model_config,
                                          name + "_action_embed")
    def __init__(self, obs_space, action_space, num_outputs, model_config,
                 name, input_files):
        super().__init__(obs_space, action_space, num_outputs, model_config,
                         name)
        nn.Module.__init__(self)

        self.input_files = input_files
        self.fcnet = TorchFC(
            self.obs_space,
            self.action_space,
            num_outputs,
            model_config,
            name="fcnet")
Exemplo n.º 13
0
    def __init__(self, obs_space, action_space, num_outputs, model_config,
                 name):
        TorchModelV2.__init__(self, obs_space, action_space, num_outputs,
                              model_config, name)
        nn.Module.__init__(self)

        # Base of the model
        self.model = TorchFC(obs_space, action_space, num_outputs,
                             model_config, name)

        # Central VF maps (obs, opp_obs, opp_act) -> vf_pred
        input_size = 6 + 6 + 2  # obs + opp_obs + opp_act
        self.central_vf_dense = SlimFC(input_size, 16, activation_fn=nn.Tanh)
        self.central_vf_out = SlimFC(16, 1)
Exemplo n.º 14
0
    def __init__(self,
                 obs_space,
                 action_space,
                 num_outputs,
                 model_config,
                 name,
                 true_obs_shape=(4, ),
                 action_embed_size=2,
                 **kw):
        DQNTorchModel.__init__(self, obs_space, action_space, num_outputs,
                               model_config, name, **kw)

        self.action_embed_model = TorchFC(
            Box(-1, 1, shape=true_obs_shape), action_space, action_embed_size,
            model_config, name + "_action_embed")
Exemplo n.º 15
0
  def __init__(self, obs_space, action_space, num_outputs, model_config, name):
    self.custom_model_config = config

    # Reshape obs to vector and convert to float
    volume = np.prod(obs_space.shape)
    space = np.zeros(volume)
    flat_observation_space = spaces.Box(low=self.custom_model_config["observation_min"],
                                        high=self.custom_model_config["observation_max"],
                                        shape=space.shape, dtype=np.float32)

    # TODO: Transform to output of any other PyTorch and pass new shape to model.

    # Create default model (for RL)
    TorchModelV2.__init__(self, flat_observation_space, action_space, num_outputs, model_config, name)
    nn.Module.__init__(self)
    self.torch_sub_model = TorchFC(flat_observation_space, action_space, num_outputs, model_config, name)
Exemplo n.º 16
0
    def __init__(
        self,
        obs_space,
        action_space,
        num_outputs,
        model_config,
        name,
        action_embed_size=2,  # Dimensionality of sentence embeddings  TODO don't make this hard-coded
        **kw):
        DQNTorchModel.__init__(self, obs_space, action_space, num_outputs,
                               model_config, name, **kw)

        self.true_obs_preprocessor = DictFlatteningPreprocessor(
            obs_space.original_space["true_obs"])
        self.action_embed_model = TorchFC(
            Box(-10, 10, self.true_obs_preprocessor.shape), action_space,
            action_embed_size, model_config, name + "_action_embed")
Exemplo n.º 17
0
    def __init__(
        self,
        obs_space,
        action_space,
        num_outputs,
        model_config,
        name,
        **kwargs,
    ):
        orig_space = getattr(obs_space, "original_space", obs_space)
        assert isinstance(orig_space, Dict) and \
            "action_mask" in orig_space.spaces and \
            "observations" in orig_space.spaces

        TorchModelV2.__init__(self, obs_space, action_space, num_outputs,
                              model_config, name, **kwargs)
        nn.Module.__init__(self)

        self.internal_model = TorchFC(orig_space["observations"], action_space,
                                      num_outputs, model_config,
                                      name + "_internal")