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