我正在使用RL的SB3包,并且我正在尝试model.learn()函数。
我不太明白model.learn()参数是如何协同工作的,以及它们是如何与我的环境协同工作的。
我的RL是从一个表格数据集工作的,所以对可能的时间步长数量有固有的限制。
假设这些是我的条件:
- 我有一个数据集20000行(可能的时间步长)
- 在我的环境中,我的step()函数包含一个if语句,它翻转了&;done&;当所采取的步数达到1,000时(step()函数计算自初始化env以来被调用的次数)。
- 我运行model.learn(), total_timesteps = 30000 .
执行此操作时没有遇到错误。有人能解释一下发生了什么吗?model.learn()是否通过前1000个时间步运行我的环境,然后重新启动并以这种方式继续循环,直到总共执行了30,000个时间步?
如果是的话,num_eval_episodes是如何提供给它的?它会改变函数的运行方式吗?如果有,怎么做?
对于零散的问题我很抱歉,我希望你能澄清。
这些天我也在使用SB3,我认为您自己的评估是">model.learn()正在通过前1,000个时间步运行环境,然后重新启动并继续以这种方式循环,直到已采取30,000个总时间步"可能是对的。你有没有设置过翻转"完成"的if语句?到True到大于数据集的步数?
据我所知,SB3是这样工作的,所以你可以在有或没有固定数量的时间步长的环境中训练,而不会在永无止境的训练中遇到问题,在这种情况下,终端状态永远不会达到。
在我自己的应用程序中,也有固定数量的时间步数每集(n_max_timesteps)我总是设置">total_timesteps=n_episodes**n_max_timesteps*"在model.learn () .
"n_eval_episodes"从重置到达到最终/终端状态,运行代理指定的集数。