Ejemplo n.º 1
0
def build_normalizer(env: EnvWrapper) -> Dict[str, NormalizationData]:
    try:
        return env.normalization_data
    except AttributeError:
        # TODO: make this a property of EnvWrapper?
        # pyre-fixme[16]: Module `envs` has no attribute `RecSim`.
        if HAS_RECSIM and isinstance(env, RecSim):
            return {
                NormalizationKey.STATE: NormalizationData(
                    dense_normalization_parameters=only_continuous_normalizer(
                        list(range(env.observation_space["user"].shape[0]))
                    )
                ),
                NormalizationKey.ITEM: NormalizationData(
                    dense_normalization_parameters=only_continuous_normalizer(
                        list(range(env.observation_space["doc"]["0"].shape[0]))
                    )
                ),
            }
        return {
            NormalizationKey.STATE: NormalizationData(
                dense_normalization_parameters=build_state_normalizer(env)
            ),
            NormalizationKey.ACTION: NormalizationData(
                dense_normalization_parameters=build_action_normalizer(env)
            ),
        }
Ejemplo n.º 2
0
 def normalization_action(self):
     if self.action_type == EnvType.DISCRETE_ACTION:
         return only_continuous_normalizer(
             list(range(self.state_dim, self.state_dim + self.action_dim)),
             min_value=0,
             max_value=1,
         )
     return only_continuous_normalizer(
         list(range(self.state_dim, self.state_dim + self.action_dim)),
         min_value=self.env.action_space.low,
         max_value=self.env.action_space.high,
     )
Ejemplo n.º 3
0
 def normalization_data(self):
     return {
         NormalizationKey.STATE:
         NormalizationData(
             dense_normalization_parameters=only_continuous_normalizer(
                 list(range(self.num_arms)), MU_LOW, MU_HIGH))
     }
Ejemplo n.º 4
0
 def normalization(self):
     if self.img:
         return None
     else:
         return only_continuous_normalizer(
             list(range(self.state_dim)),
             self.env.observation_space.low,
             self.env.observation_space.high,
         )
Ejemplo n.º 5
0
def build_state_normalizer(env: EnvWrapper):
    if isinstance(env.observation_space, spaces.Box):
        assert (
            len(env.observation_space.shape) == 1
        ), f"{env.observation_space.shape} has dim > 1, and is not supported."
        return only_continuous_normalizer(
            list(range(env.observation_space.shape[0])),
            env.observation_space.low,
            env.observation_space.high,
        )
    elif isinstance(env.observation_space, spaces.Dict):
        # assuming env.observation_space is image
        return None
    else:
        raise NotImplementedError(f"{env.observation_space} not supported")
Ejemplo n.º 6
0
def build_action_normalizer(env):
    action_space = env.action_space
    if isinstance(action_space, spaces.Discrete):
        return only_continuous_normalizer(list(range(action_space.n)),
                                          min_value=0,
                                          max_value=1)
    elif isinstance(action_space, spaces.Box):
        assert action_space.shape == (
            1, ), f"Box action shape {action_space.shape} not supported."

        return only_continuous_action_normalizer(
            [0],
            min_value=action_space.low.item(),
            max_value=action_space.high.item())
    else:
        raise NotImplementedError(f"{action_space} not supported.")
Ejemplo n.º 7
0
def build_normalizer(env):
    if isinstance(env.observation_space, gym.spaces.Box):
        assert (len(env.observation_space.shape) == 1
                ), f"{env.observation_space} not supported."
        return {
            "state":
            NormalizationData(
                dense_normalization_parameters=only_continuous_normalizer(
                    list(range(env.observation_space.shape[0])),
                    env.observation_space.low,
                    env.observation_space.high,
                ))
        }
    elif isinstance(env.observation_space, gym.spaces.Dict):
        # assuming env.observation_space is image
        return None
    else:
        raise NotImplementedError(f"{env.observation_space} not supported")
Ejemplo n.º 8
0
def build_action_normalizer(env: Env):
    action_space = env.action_space
    if isinstance(action_space, spaces.Discrete):
        return only_continuous_normalizer(list(range(action_space.n)),
                                          min_value=0,
                                          max_value=1)
    elif isinstance(action_space, spaces.Box):
        assert (len(action_space.shape) == 1
                ), f"Box action shape {action_space.shape} not supported."

        action_dim = action_space.shape[0]
        return only_continuous_action_normalizer(
            list(range(action_dim)),
            min_value=action_space.low,
            max_value=action_space.high,
        )
    else:
        raise NotImplementedError(f"{action_space} not supported.")
Ejemplo n.º 9
0
 def normalization_action(self):
     return only_continuous_normalizer(
         list(range(self.num_states, self.num_states + self.num_actions)),
         min_value=0,
         max_value=1,
     )