VecGymEnvTransform¶
- class torchrl.envs.transforms.VecGymEnvTransform(final_name='final')[源代码]¶
用于 GymWrapper 子类的转换,以一致的方式处理自动重置。
Gym、gymnasium 和 SB3 提供了自动重置的矢量化(即并行或批处理)环境。发生这种情况时,实际的观测结果(由动作产生的)保存在 info 中的一个键内。类
torchrl.envs.libs.gym.terminal_obs_reader
读取该观测结果并将其存储在输出 tensordict 中的"final"
键中。反过来,此转换读取最终数据,将其与替换实际重置产生的观测结果(写在其位置),并将重置输出保存到私有容器中。生成的数据真正反映了步骤的输出。此类适用于从 gym 0.13 到最新的 gymnasium 版本。
注意
Gym 版本 < 0.22 不会返回最终的观测结果。对于这些版本,我们只需将下一个观测结果填充为 NaN(因为它们已丢失)并在下一步进行交换。
然后,在调用 env.reset 时,保存的数据将被写回到它所属的位置(reset 是一个空操作)。
每当使用异步环境创建包装器时,此转换将自动附加到 gym 环境中。
- 参数:
final_name (str, 可选) – 字典中最终观测结果的名称。默认为 “final”。
注意
通常,此类不应直接处理。每当矢量化环境被放置在
GymWrapper
中时,它都会被创建。- transform_observation_spec(observation_spec: TensorSpec) TensorSpec [源代码]¶
转换观测规范,以使结果规范匹配转换映射。
- 参数:
observation_spec (TensorSpec) – 转换前的规范
- 返回值:
转换后的预期规范