我如何指定model.learn()在稳定基线3的特定事件内结束



我知道指定total_timesteps=是一个必需参数,但如何在特定剧集内结束model.learn()?请原谅,我对stables_baselines3pytorch还是个新手,还不知道如何在代码中实现它。

import gym
import numpy as np
from stable_baselines3 import DDPG
from stable_baselines3.common.noise import NormalActionNoise
env = gym.make('NeuralTraffic-v1')
n_actions = env.action_space.shape[-1]
action_noise = NormalActionNoise(mean=np.zeros(n_actions), sigma=0.1 * np.ones(n_actions))
model = DDPG("MlpPolicy", env, action_noise=action_noise, verbose=1)
model.learn(total_timesteps=60, log_interval=1)
model.save("ddpg")
env = model.get_env()

我想在60号结束这一集,但我的推出是:

----------------------------------
| rollout/           |           |
|    ep_len_mean     | 94        |
|    ep_rew_mean     | -2.36e+04 |
| time/              |           |
|    episodes        | 1         |
|    fps             | 0         |
|    time_elapsed    | 452       |
|    total_timesteps | 94        |
----------------------------------

我不明白为什么只有一集?我想学习如何将学习限制在特定的情节内。

Generic Box-2D和经典控制环境在一集内有1000个时间步长,但这不是恒定的,因为代理在一开始可能会做一些奇怪的事情,环境可能会自行重置(导致每集的时间步长不均匀(。因此,在进行基准测试(在无模型RL的大多数研究论文中为1e6(时,通常要记住特定的时间步长,而不是指定一定数量的剧集。正如你在SB3 Docs DDPG中看到的那样,学习方法,他们没有提供特定的参数来设置集数,实际上最好记住特定的时间步长。我看到你用60代替了total_timesteps。这对训练RL特工来说太少了。试着保留1e51e6这样的东西,你可能会看到好的结果。祝你好运

相关内容

  • 没有找到相关文章

最新更新