我正在尝试使用 Gym Retro 和 Stable-Baselines 来训练机器人玩超级马里奥兄弟。一切似乎都有效,只是环境似乎并没有真正结束/重置。它录制的BK2文件大小超过500 kb,转换成视频大约需要20分钟,视频时长大约2小时。视频本身以大约三分钟的 AI 游戏开始,但在失去所有三个生命后,它会停留在标题屏幕上,直到演示开始播放。我很确定这个演示会被奖励功能所接受,所以它会干扰训练。我还担心它会大大减慢训练速度,因为它必须经历 2 小时的额外“游戏”。这是我的场景文件的样子:
{
"done": {
"condition": "any",
"variables": {
"lives": {
"op": "equal",
"reference": -1
},
"time": {
"op": "equal",
"reference": 0
}
}
},
"reward": {
"variables": {
"xscrollHi": {
"reward": 10
},
"playerx": {
"reward": 0.1
},
"coins": {
"reward": 10
}
}
}
}
我已经使用集成 UI 工具验证了 Done 和 Did-End 变量在满足任一完成条件时切换为 yes。以防万一这里是相关的 Python 代码:
env = DummyVecEnv([lambda: retro.make("SuperMarioBros-Nes", state="Level1-1.state", scenario="training", record="/gdrive/MyDrive/530_project")])
#model = PPO2(CnnPolicy, env, verbose=1)
for i in range(24):
model = PPO2.load(filePath + "/" + fileName)
model.set_env(env)
model.learn(total_timesteps=time_steps, log_interval=1000, reset_num_timesteps=False)
model.save(filePath + "/" + fileName)
print("done with iteration ", i)
del model
如果您想查看整个 Python 笔记本,请点击以下链接:https ://colab.research.google.com/drive/1ThxDqjeNQh3rNEXYqlXJQ6tn3W2TPK7k?usp=sharing
修复这个问题可能不会改变它的训练方式,但至少我希望有更小的 bk2 和 mp4 文件,这样它们更容易处理。任何意见,将不胜感激。也让我知道是否有更好的地方可以问这个问题