Skip to content

AshburnLee/ppo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

使用

使用 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

效果:

CartPole-v1

生成 video 是 gym 库的功能,wandb 只是上传。

所以有关 video 的问题都可以在 gym 库中找到答案。

KAQ: 我的循环中,会有不止一个视频被记录,只有第一个 episode 的 video 是活动的,其他都是死的不动的。为什么?

应该是记录的方式不正确。更新后没有改问题。

KAQ: 活动的 video 中的帧不是完全连续的。为什么?

因为你指明了 video 的 video_length 参数,所以一次episode填充不了的话,就会有多个episode。当你不指明 video_length 时,视频会一直录制直到 episode 结束。

KAQ: 如何记录最终训练好的 video?

cartpole terminated 的条件不是 pole 倒下,而是杆倾斜左右超过定义的界限,或车左右移动超过定义的位置。所以不要纠结于pole倒下与否。目标是观察到 pole 始终树立。

已经更新在code中。

SPS

SPS(Steps Per Second)表示你的算法每秒执行了多少步(环境交互步骤),衡量训练效率,是训练速度的重要指标。这个指标应该是住进增大,然后趋于稳定。当SPS趋于平缓,说明训练流程中的计算和数据处理达到了当前硬件和代码效率的瓶颈。SPS 不能表征训练效果。训练效果要看reward和loss的趋势。

SPS = int(global_step / (time.time() - start_time))

  • global_step 是训练过程中累计的环境步数(总动作数)。
  • time.time() - start_time 是从训练开始到结束的总时间(秒)。

video capture

video_length:保存的视频的时长。只与保存的视频时长有关。不影响训练。不同的数值会填充或截断视频时长。

step_trigger:第多少step时触发捕捉 video。训练步数越多,保存的video也越多。不影响训练。

num_steps:每一个 env 中 agent 与环境交互的 step 数。step 数量影响性能。CartPole-v1 最大步数是 500 步。num_steps 太大,性能反而下降(256->1000 性能下降)

KAQ:在code中num_steps 表示每一个env的step长度。它与CartPole-v1中500 step有关系吗?

Episode 是啥

一个 episode 对应一次环境运行,从 reset 到 terminated 或 truncated

step 是 episode 中的每一“步”

使用训练好的 Agent 进行推理

当你没有限制 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定义)

max_episode_steps 表示推理时一个episode中step步数

env = gym.wrappers.TimeLimit(gym.make("CartPole-v1", render_mode="rgb_array"), max_episode_steps=100)

最多 100 步,故对于 CartPole-v1,Reward 最大 100

About

ppo from scratch

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages