Какова цель строки np.max при использовании оболочки пропуска кадров для OpenAI Gym? - PullRequest
0 голосов
/ 06 августа 2020

Я реализую следующую оболочку, обычно используемую в OpenAI Gym для пропуска кадров. Его можно найти в dqn / atari_wrappers.py

Меня очень смущает следующая строка:

max_frame = np.max (np.stack (self._obs_buffer), axis = 0 )

Я добавил комментарии по всему коду для частей, которые я понимаю, и чтобы помочь любому, кто может помочь.

np.stack (self._obs_buffer) складывает два состояния в _obs_buffer .

np.max возвращает максимум по оси 0.

Но я не понимаю, зачем мы это делаем или что на самом деле.

class MaxAndSkipEnv(gym.Wrapper):
    """Return only every 4th frame"""
    def __init__(self, env=None, skip=4):
        super(MaxAndSkipEnv, self).__init__(env)
        # Initialise a double ended queue that can store a maximum of two states
        self._obs_buffer = deque(maxlen=2)
        # _skip = 4
        self._skip       = skip

    def _step(self, action):
        total_reward = 0.0
        done = None
        for _ in range(self._skip):
            # Take a step 
            obs, reward, done, info = self.env.step(action)
            # Append the new state to the double ended queue buffer 
            self._obs_buffer.append(obs)
            # Update the total reward by summing the (reward obtained from the step taken) + (the current 
            # total reward)
            total_reward += reward
            # If the game ends, break the for loop 
            if done:
                break

        max_frame = np.max(np.stack(self._obs_buffer), axis=0)

        return max_frame, total_reward, done, info

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...