我想做的就是修改一个环境,例如使用超级马里奥兄弟的gym环境,并模糊代理训练的图像,看看强化学习代理是否仍然能够在这些“模糊”的状态下学习。
OpenAI是否允许进行这样的操作?我该如何添加gym环境的前处理步骤?
回答:
我建议你为你的gym环境创建一个包装器,在step()
和reset()
函数中添加处理步骤
这里有一小段代码来说明这个想法:
class EnvWrapper(gym.Env): def __init__(self, config): self.env = gym.make("Your-Env-Name") # 包装器封装了gym环境 def step(self, action): obs, reward, done, info = self.env.step(action) # 调用gym环境的方法 obs = self._blur(obs) # 应用你的特定处理 return obs, reward, done, info def reset(self): obs = self.env.reset() # 对reset也进行相同处理 return self._blur(obs) def _blur(self): do_whatever_you_need
使用这种方法,你无需对原始环境进行任何修改,这通常是一个好主意