首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >健身房回顾/稳定-满足完成条件后基线不会停止迭代

健身房回顾/稳定-满足完成条件后基线不会停止迭代
EN

Stack Overflow用户
提问于 2020-11-30 00:20:34
回答 2查看 233关注 0票数 1

我正在尝试使用Gym Retro和稳定基线来训练一个机器人来玩超级马里奥兄弟。一切似乎都可以工作,除了它看起来环境并没有在它应该结束/重置的时候真正结束/重置。它录制的BK2文件大小超过500kb,大约需要20分钟才能转换成视频,视频大约有2小时长。视频本身开始大约三分钟的人工智能游戏,但在它失去了所有三个生命后,它坐在标题屏幕上,直到演示开始播放。我很确定这个演示会被奖励函数选中,所以它会干扰训练。我还担心它会大大减慢训练速度,因为它必须坐2个小时的额外“游戏”。下面是我的场景文件:

代码语言:javascript
运行
复制
{
  "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
      }
    }
  }
}

我已经使用Integration UI工具验证了,当满足任一Done条件时,done和Did-End变量将切换为yes。以防万一,下面是相关的Python代码:

代码语言:javascript
运行
复制
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文件,这样它们就更容易处理。任何建议都将不胜感激。如果有更好的地方问这个问题,也请告诉我

EN

回答 2

Stack Overflow用户

发布于 2020-12-02 23:01:54

如果任何人在这个问题上发现了这个问题,我差不多找到了答案。我误解了total_timesteps是什么。看起来它实际上是每次运行的时间限制。我将其设置为生命中的时间耗尽所需的时间,这样它就可以有效地工作,但它仍然有点卡壳。

票数 1
EN

Stack Overflow用户

发布于 2021-05-21 18:28:55

你不需要加载和删除每一集的模型。learn()中的时间步长与学习所有剧集的总时间步长相对应。如果你想限制剧集长度,你可以使用健身房TimeLimit ->。

您的代码可能如下所示:

代码语言:javascript
运行
复制
from gym.wrappers.time_limit import TimeLimit
time_steps = 1000000
episode_length = 500

env = DummyVecEnv([lambda: TimeLimit('your_mario_env_config...', 
                                      max_episode_steps=episode_length)])
model = PPO2(CnnPolicy, env, verbose=1)
model.learn(total_timesteps=time_steps, log_interval=1000, reset_num_timesteps=False)
model.save(filePath + "/" + fileName)

我们在这里限制了每一集的500步,而整个学习过程将有大约1000000步。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65062331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档