gpt4 book ai didi

deep-learning - 在 OpenAI Gym 中使用跳帧包装器时,np.max 行的用途是什么?

转载 作者:行者123 更新时间:2023-12-02 05:47:11 25 4
gpt4 key购买 nike

我正在实现以下在 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

最佳答案

for 循环结束时,self._obs_buffer 保存最后两帧。然后对这两帧进行最大池化处理,得到一个包含一些时间信息的观察结果。

关于deep-learning - 在 OpenAI Gym 中使用跳帧包装器时,np.max 行的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63285569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com