【问题标题】:Stable-Baselines3 package, model.learn() function - how do total_timesteps and num_eval_episodes work together?Stable-Baselines3 包,model.learn() 函数 - total_timesteps 和 num_eval_episodes 如何协同工作?
【发布时间】:2022-07-18 19:14:52
【问题描述】:

我正在为 RL 使用 SB3 包,并且正在尝试 model.learn() 函数。

我不完全了解 model.learn() 参数在它们如何协同工作以及与我的环境中的作用。

我的 RL 使用表格数据集工作,因此可能的时间步数存在固有限制。

假设这些是我的条件:

  1. 我有一个包含 20,000 行的数据集(可能的时间步长)
  2. 在我的环境中,我的 step() 函数包含一个 if 语句,当执行的步数达到 1,000 时,它会将“done”翻转为 True(step() 函数计算自初始化以来它被调用的次数)环境)。
  3. 我以 total_timesteps = 30,000 运行 model.learn()。

我这样做时没有遇到任何错误。有人可以解释发生了什么吗? model.learn() 是否在前 1,000 个时间步中运行我的环境,然后重新启动并继续以这种方式循环,直到总时间步达到 30,000 个?

如果是这样,num_eval_episodes 是如何参与其中的?它会改变函数的运行方式吗?如果有,怎么做?

对于分散的问题,我很抱歉,感谢您的澄清。

【问题讨论】:

    标签: reinforcement-learning stable-baselines


    【解决方案1】:

    这些天我也在使用 SB3,我认为您自己的评估是“model.learn() 正在通过前 1,000 个时间步运行环境,然后重新启动并继续以这种方式循环直到 30,000 total timesteps has been taken" 可能是正确的。 您是否曾经将将“完成”翻转为 True 的 if 语句设置为比您的数据集大的步数?

    据我所知,SB3 是这样工作的,因此您可以在有或没有固定时间步长的环境中进行训练,而不会在永远无法达到最终状态的情况下进行无限训练。

    在我自己的应用程序中,每集都有固定的时间步数 (n_max_timesteps),我总是设置 "total_timesteps=n_episodes **n_max_timesteps*" 在 model.learn() 中。

    “n_eval_episodes”在从重置到达到最终/终止状态的指定数量的情节中运行代理。

    【讨论】:

      猜你喜欢
      • 2022-11-08
      • 2022-10-08
      • 1970-01-01
      • 2022-12-04
      • 1970-01-01
      • 2021-12-09
      • 2019-04-21
      • 2014-08-05
      • 2020-01-14
      相关资源
      最近更新 更多