将VLN-CE迁移到habitat 0.2.1并使用PPO

2022-03-15 Views 研究252字1 min read
  1. 在models下创建新的policy并注册,以habitat_baselines.rl.ppo.policy.Policy为基类,重载初始化函数传入自己的Net
  2. 在vlnce_baselines下创建新的trainer并注册,基本照搬了源码的ppo_trainer
  3. 在config下创建新的配置文件,配置RL参数,并设置新的trainer和policy
  4. 在vlnce_baselines.__init__.py中引入新写的trainer和policy
  5. 在vlnce_baselines.common.environments.py中定义新的Env类,添加奖励信息。并在配置中修改ENV_NAME
  6. 调试并修改bug
    1. habitat原装batch_obs可以使用,记得在这之前加extract_instruction_tokens
    2. 要自己重定义InstructionSensor和SubInstructionSensor,在其中加上数据的维度,不然rollout buffer无法构造空容器
    3. 修改配置中的RL.POLICY.name,指向自己写的policy
      暂时可跑通,但还有一些需要处理的。首先是效率看上去不太够,其次是如何设置奖励
  7. 在policy中新增了extra_load_net函数,可以单独载入之前用DAGGER训练的net权重

habitat 0.1.7也可以使用PPO,要对save_resume_state和batch_obs做适配即可。

EOF