MAPPO之模型测试——eval

1 测试前的准备

在进行eval函数前,需要先训练好模型,也可以选择同时运行run、eval函数(下面附有如何同时运行的代码),但是基本没必要。
在预训练的过程中,神经网络模型默认保存在 /results/MyEnv/MyEnv/mappo/check/run/models目录下,训练完成后找到最后一次更新后保存的文件,models下面会有 accor.ptcritic.pt文件即代表下面可以进行eval函数。
同时,写好自己的eval_envs文件self.eval_envs = config['eval_envs']

2 如何测试

2.1 同时运行run和eval

MAPPO的light版本代码默认是不进行eval操作的,源头在run函数中有体现:

 # eval
            if episode % self.eval_interval == 0 and self.use_eval:
                self.eval(total_num_steps)

在config的文件中,默认--use_eval为False,所以在运行run函数时不会进行eval操作,这里只需要把这个参数改为True即可同时运行self.eval函数。

parser.add_argument("--use_eval", action='store_true', default=True, help="by default, do not start evaluation. If set`, start evaluation alongside with training.")

2.2 只运行eval

在训练完成后,我们可以只运self.eval函数,以检验训练策略的好坏。

  1. 把train里面的runner.run()改为runner.eval(total_num_steps),这个total_num_steps自己可以根据情况设定。
  2. 在config中把"--model_dir"赋值为你训练好的模型就行。
  parser.add_argument("--model_dir", type=str, default='../results/MyEnv/MyEnv/mappo/check/run1/models', help="by default None. set the path to pretrained model.")

赋值完后在base_runner文件中会自动加载训练好的网络:

        if self.model_dir is not None:
            self.restore()
    def restore(self):
        """Restore policy's networks from a saved model."""
        policy_actor_state_dict = torch.load(str(self.model_dir) + '/actor.pt')
        self.policy.actor.load_state_dict(policy_actor_state_dict)
        if not self.all_args.use_render:
            policy_critic_state_dict = torch.load(str(self.model_dir) + '/critic.pt')
            self.policy.critic.load_state_dict(policy_critic_state_dict)
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值