使用 W&b:python ppo.py --track --capture-video. 点击 w&b link 即可。W&B 可以显示你的 tensorboard
不适用 w&b:
python ppo.py
tensorboard --logdir runs浏览器打开 http://localhost:6006/ 选择你的目标 run
# video-length: 100 = 2sec, 200 = 4sec, 400 = 8sce, 500 = 10sec
python ppo.py --capture-video --capture-interval 2000 --video-length 500 --num-steps 256
python ppo_apply.py效果:
生成 video 是 gym 库的功能,wandb 只是上传。
所以有关 video 的问题都可以在 gym 库中找到答案。
应该是记录的方式不正确。更新后没有改问题。
因为你指明了 video 的 video_length 参数,所以一次episode填充不了的话,就会有多个episode。当你不指明 video_length 时,视频会一直录制直到 episode 结束。
cartpole terminated 的条件不是 pole 倒下,而是杆倾斜左右超过定义的界限,或车左右移动超过定义的位置。所以不要纠结于pole倒下与否。目标是观察到 pole 始终树立。
已经更新在code中。
SPS(Steps Per Second)表示你的算法每秒执行了多少步(环境交互步骤),衡量训练效率,是训练速度的重要指标。这个指标应该是住进增大,然后趋于稳定。当SPS趋于平缓,说明训练流程中的计算和数据处理达到了当前硬件和代码效率的瓶颈。SPS 不能表征训练效果。训练效果要看reward和loss的趋势。
SPS = int(global_step / (time.time() - start_time))
global_step是训练过程中累计的环境步数(总动作数)。time.time() - start_time是从训练开始到结束的总时间(秒)。
video_length:保存的视频的时长。只与保存的视频时长有关。不影响训练。不同的数值会填充或截断视频时长。
step_trigger:第多少step时触发捕捉 video。训练步数越多,保存的video也越多。不影响训练。
num_steps:每一个 env 中 agent 与环境交互的 step 数。step 数量影响性能。CartPole-v1 最大步数是 500 步。num_steps 太大,性能反而下降(256->1000 性能下降)
一个 episode 对应一次环境运行,从 reset 到 terminated 或 truncated
step 是 episode 中的每一“步”
当你没有限制 max_episode_steps 数量。推理时的视频长度与 reward 大小一致,reward 越大,视频越长,即这次推理的 episode 中step数越多。
Reward 329.0 Video Length 6m Reward 390.0 video length 7m Reward 500.0 video length 10m 这是最大Reward了(CartPole-v1定义)
env = gym.wrappers.TimeLimit(gym.make("CartPole-v1", render_mode="rgb_array"), max_episode_steps=100)
最多 100 步,故对于 CartPole-v1,Reward 最大 100