微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

正确使用 a2c.A2cTrainer Rllib 与 Gym 和 pettingzoo

如何解决正确使用 a2c.A2cTrainer Rllib 与 Gym 和 pettingzoo

我正在使用此 article 中的 rllib 构建演讲者听众培训环境。 使用 pettingzoo and supersuit

我遇到了以下错误

NotImplementedError: Cannot convert a symbolic Tensor (default_policy/cond/strided_slice:0) to a numpy array

当我尝试运行我的代码时,但由于我对这些包缺乏经验,我不明白问题是在我的代码中还是在包的使用中,因为它们应该足以与 rllib 一起使用。 我最后附上了我的代码,这是有问题的行:

agent = a2c.A2CTrainer(env="simple_speaker_listener",config=config)

我相信我已经接近让它工作了,这是其余的代码

import numpy as np
import supersuit
from copy import deepcopy
from ray.rllib.env import PettingZooEnv
import ray.rllib.agents.a3c.a2c as a2c
import ray
from ray.tune.registry import register_env
from ray.rllib.env import BaseEnv
from pettingzoo.mpe import simple_speaker_listener_v3

alg_name = "PPO"
config = deepcopy(a2c.A2C_DEFAULT_CONfig)
config["env_config"] = None
config["rollout_fragment_length"] = 20
config["num_workers"] = 5
config["num_envs_per_worker"] = 1
config["lr_schedule"] = [[0,0.007],[20000000,0.0000000001]]
config["clip_rewards"] = True
s = "{:3d} reward {:6.2f}/{:6.2f}/{:6.2f} len {:6.2f}"
multiagent_dict = dict()
multiagent_policies = dict()
env = simple_speaker_listener_v3.env()
agents_name = deepcopy(env.possible_agents)
config = {
          "num_gpus": 0,"num_workers": 1,}
env = simple_speaker_listener_v3.env()
mod_env = supersuit.aec_wrappers.pad_action_space(env)
mod_env = supersuit.aec_wrappers.pad_observations(mod_env)
mod_env = PettingZooEnv(mod_env)
register_env("simple_speaker_listener",lambda stam: mod_env)

ray.init(num_gpus=0,local_mode=True)
agent = a2c.A2CTrainer(env="simple_speaker_listener",config=config)

for it in range(5):
    result = agent.train()
    print(s.format(
        it + 1,result["episode_reward_min"],result["episode_reward_mean"],result["episode_reward_max"],result["episode_len_mean"]
    ))
    mod_env.reset()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。