如何设置何时录制视频的触发器 open ai gym

how to set a trigger for when to record video open ai gym

我 运行 多集,但只想录制特定的几集。更具体地说,我想要一个输入作为触发器。目前,我的代码是这样的:

env = gym.make("HalfCheetah-v3")

env = gym.wrappers.RecordVideo(env, 'video')

env.reset()
for t in range(200):
    action = env.action_space.sample()
    observation, reward, done, info = env.step(action)

env.close()
env.reset()
#I only one to record this run
for t in range(200):
    action = env.action_space.sample()
    observation, reward, done, info = env.step(action)
env.close()

那么,有两集,但我想只录第二集。或者一般来说,我想要一个输入,我可以 select 哪些剧集被录制,哪些剧集没有被录制。

函数 RecordVideo 有一个参数 step_trigger,其形式为:step_trigger: Callable[[int], bool] = None,但我真的不知道如何使用它。

我发现了另一个问题 here,他们使用 lambda id_episode:True。我试过了,但没有什么不同,因为我可能没有正确使用它。如果有任何帮助,我将不胜感激。

根据 Wrappers on gym 的文档website,episode/step 触发器应该是一个接受 episode/step 索引和 returns 一个 bool 值的函数。因此,例如,如果你只想录制第二集的视频,包装器应该这样使用:

#record video for the second episode    
env = gym.wrappers.RecordVideo(env, 'video', episode_trigger = lambda x: x == 2)

或者,如果您想为每偶数步录制视频:

#record video for every even episodes
env = gym.wrappers.RecordVideo(env, 'video', episode_trigger = lambda x: x % 2 == 0)