PettingZoo 特工训练超级套装和稳定基线 3

问题描述 投票:0回答:1

我正在尝试使用稳定的基线和超级套装在 PettingZoo 环境中训练代理。

稳定基线 3 的新版本(测试版)现在支持 Gymnasium,而不仅仅是 Gym。因此应该是兼容的。但看起来还是不兼容。

如果可以使用稳定的基线 3 在 pettingzoo 环境中训练智能体,谁能解释一下?另外,如果最新的测试版不兼容,有谁知道哪些版本是兼容的并且可以与下面的软件包很好地配合使用?

Python 版本 - 3.10.10
稳定基线3 - 2.0.0a13
超级套装 - 3.8.0
宠物动物园 - 1.23.1
体育馆 - 0.28.1

from stable_baselines3.ppo import CnnPolicy
from stable_baselines3 import PPO
from pettingzoo.butterfly import pistonball_v6
import supersuit as ss
from pettingzoo.utils.conversions import aec_to_parallel


env = pistonball_v6.env(n_pistons=20, 
                        time_penalty=-0.1, 
                        continuous=True, 
                        random_drop=True, 
                        random_rotate=True, 
                        ball_mass=0.75, 
                        ball_friction=0.3, 
                        ball_elasticity=1.5,
                        max_cycles=125)
env = ss.color_reduction_v0(env, mode="B")
env = ss.resize_v1(env, x_size=84, y_size=84)
env = ss.frame_stack_v1(env, 3)
env = aec_to_parallel(env)
env = ss.pettingzoo_env_to_vec_env_v1(env)


env = ss.concat_vec_envs_v1(env, 1, base_class='stable_baselines3')

model = PPO(CnnPolicy, 
            env, 
            verbose=3, 
            gamma=0.95, 
            n_steps=256, 
            ent_coef=0.0905168, 
            learning_rate=0.00062211, 
            vf_coef=0.042202, 
            max_grad_norm=0.9, 
            gae_lambda=0.99, 
            n_epochs=5, 
            clip_range=0.3, 
            batch_size=256)


model.learn(total_timesteps=2000000)
model.save('policy')

错误:第 26 行 - model = PPO(CnnPolicy...

TypeError: VectorEnv.get_attr() takes 2 positional arguments but 3 were given

python-3.x reinforcement-learning openai-gym stable-baselines pettingzoo
1个回答
0
投票

一直在测试非常相似的代码(稍微修改了pistonball_v5),我在你的代码中做了两处更改

已删除 env = aec_to_parallel(env)

并且改变了 env = ss.concat_vec_envs_v1(env,1,base_class='stable_baselines) 到 env = ss.concat_vec_envs_v1(env, num_vec_envs=4, num_cpus=1,base_class='stable_baselines3')

num_cpus=1,必须是 1,因为我有一个 GPU

© www.soinside.com 2019 - 2024. All rights reserved.