VecGymEnvTransform¶
- class torchrl.envs.transforms.VecGymEnvTransform(final_name='final')[source]¶
一個用於 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, 可選的) – dict 中最終觀察結果的名稱。預設為 “final”。
注意
通常,不應直接處理此類。每當將向量化環境放入
GymWrapper中時,就會建立它。- transform_observation_spec(observation_spec: TensorSpec) TensorSpec[source]¶
轉換觀察規範,使得結果規範與轉換對映相匹配。
- 引數:
observation_spec (TensorSpec) – 轉換前的規範
- 返回值:
轉換後預期的規範