问候!
我是稳定基线3的新手,但我看过许多关于它的实现和自定义环境公式的教程。
在使用gym和稳定基线3 SAC算法开发我的模型后,我应用(check_env(函数来检查可能的错误,一切都很完美。然而,每当我运行代码时,我看到的唯一输出是:
使用cpu设备 将env封装在DummyVecEnv中
培训课程将停止,没有任何输出或将模型保存到目录文件中。
请问可能出了什么问题,我已经将verbose设置为1。
谨致问候,Mich
我的代码也有类似的问题。它只显示";使用cpu设备";,并且不打印环境中的监控变量。此外,当我使用env = make_vec_env(env_id, n_envs=num_cpu)
它打印我的变量,而不是SubprocVecEnv,但似乎没有使用所有的CPU核心!
感谢
import gym
import numpy as np
from stable_baselines3 import DQN, PPO, A2C, SAC
from stable_baselines3.common.evaluation import evaluate_policy
from stable_baselines3.common.vec_env import DummyVecEnv, SubprocVecEnv
from stable_baselines3.common.utils import set_random_seed
from stable_baselines3.common.evaluation import evaluate_policy
from stable_baselines3.common.env_util import make_vec_env
from gym.envs.registration import load_env_plugins as _load_env_plugins
from gym.envs.registration import make, register, registry, spec
register(
id="SmartCHP-v0",
entry_point="SmartCHP_env:CHPEnv"
)
def make_env(env_id, rank, seed=0):
"""
Utility function for multiprocessed env.
:param env_id: (str) the environment ID
:param num_env: (int) the number of environments you wish to have in subprocesses
:param seed: (int) the inital seed for RNG
:param rank: (int) index of the subprocess
"""
def _init():
env = gym.make(env_id)
env.seed(seed + rank)
return env
set_random_seed(seed)
return _init
env_id = "SmartCHP-v0"
if __name__ == '__main__':
env_id = "SmartCHP-v0"
num_cpu = 16 # Number of processes to use
# Create the vectorized environment
env = SubprocVecEnv([make_env(env_id, i) for i in range(num_cpu)])
# env = make_vec_env(env_id, n_envs=num_cpu)
model = A2C('MlpPolicy', env, verbose=1).learn(total_timesteps=int(2*24*98))