0

PPO 模型不会遍历整个数据框 .. 它基本上多次重复第一步(本例中为 10,000 次)?

在这种情况下,DF 的形状是 (5476, 28),每一步的 obs 形状是:(60, 28).. 我没有看到它遍历整个 DF。

# df shape - (5476, 28)
env = MyRLEnv(df)
model = PPO("MlpPolicy", env, verbose=4)
model.learn(total_timesteps=10000)


MyRLEnv:
self.action_space = spaces.Discrete(4)
self.observation_space = spaces.Box(low=-np.inf, high=np.inf, shape=(60, 28) , dtype=np.float64)

谢谢!

4

1 回答 1

0

几天前我也被类似的东西卡住了,但是经过深入检查后,我发现该learn方法实际上运行环境n多次,现在n等于total_timesteps/size_of_df,在你的情况下,这将10000/5476是几乎等于1.8,所以这1.8意味着,该算法将在开始时重置环境,然后step对整个数据帧运行该方法并再次重置环境并仅对数据帧中 80% 的数据运行 step 方法。因此,当PPO算法停止时,您会看到只有 80% 的数据帧正在运行。

Actor Critic Algorithms 多次运行环境以提高其效率,这就是为什么通常建议为了获得更好的结果我们应该保持total_timesteps相当高的值,以便它可以在相同的情况下运行它数据相当长的一段时间,以更好地学习。

Example:假设我的total_timesteps= 10000 和len(df)= 5000,那么在这种情况下,它将运行n = total_timesteps/len(df)= 2 整个数据帧的完整扫描。

于 2022-03-01T15:14:10.020 回答