Spaces¶
此模組實作了各種空間。
Spaces 描述數學集合,並在 Gym 中用於指定有效的動作和觀察。每個 Gym 環境都必須具有 action_space
和 observation_space
屬性。例如,如果您的環境中可以執行三種可能的動作 (0,1,2),並且觀察是二維單位立方體中的向量,則環境程式碼可能包含以下兩行
self.action_space = spaces.Discrete(3)
self.observation_space = spaces.Box(0, 1, shape=(2,))
所有 space 都繼承自 Space
父類別。
- class gymnasium.spaces.Space(shape: Sequence[int] | None = None, dtype: npt.DTypeLike | None = None, seed: int | np.random.Generator | None = None)[原始碼]¶
用於定義觀察和動作空間的父類別。
Spaces 在 Gym 中至關重要,用於定義有效動作和觀察的格式。它們有多種用途
它們清楚地定義了如何與環境互動,即它們指定了動作應該是什麼樣子,以及觀察結果將會是什麼樣子
它們讓我們能夠處理高度結構化的資料(例如,以
Dict
space 元素的形式),並輕鬆地將其轉換為可用於學習程式碼的平面陣列它們提供了一種採樣隨機元素的方法。這對於探索和偵錯特別有用。
不同的 space 可以透過容器 space (
Tuple
和Dict
) 以階層方式組合,以建立更具表現力的 space警告
自訂觀察和動作 space 可以繼承自
Space
類別。但是,大多數使用案例應由現有的 space 類別(例如Box
、Discrete
等)和容器類別(Tuple
和Dict
)涵蓋。請注意,參數化機率分佈(透過Space.sample()
方法)和批次處理函數(在gym.vector.VectorEnv
中)僅針對預設在 gym 中提供的 space 實例明確定義。此外,某些強化學習演算法的實作可能無法正確處理自訂 space。請謹慎使用自訂 space。- 參數:
shape (Optional[Sequence[int]]) – 如果 space 的元素是 numpy 陣列,則應指定其形狀。
dtype (Optional[Type | str]) – 如果 space 的元素是 numpy 陣列,則應指定其 dtype。
seed – (可選)您可以使用此引數為用於從 space 採樣的 RNG 設定種子
屬性¶
- property Space.shape: tuple[int, ...] | None¶
以不可變屬性傳回 space 的形狀。
- property Space.dtype¶
傳回此 space 的資料類型。
- property Space.is_np_flattenable: bool¶
檢查此 space 是否可以扁平化為
gymnasium.spaces.Box
。
方法¶
每個 space 都實作了以下函數
- Space.sample(mask: Any | None = None, probability: Any | None = None) T_cov [原始碼]¶
隨機採樣此 space 的元素。
可以根據 space 的邊界進行均勻或非均勻採樣。
二進位遮罩和機率遮罩不能同時使用。
- 參數:
mask – 用於隨機採樣的遮罩,預期
dtype=np.int8
,並參閱樣本實作以了解預期的形狀。probability – 用於根據給定的機率分佈進行採樣的機率遮罩,預期
dtype=np.float64
,並參閱樣本實作以了解預期的形狀。
- 傳回:
從 space 採樣的動作
基本 Spaces¶
Gymnasium 有許多基本 space,可用作更複雜 space 的建構塊。
Box
- 支援連續(和離散)向量或矩陣,用於向量觀察、影像等Discrete
- 支援單個離散數值,並可選擇數值的起始值MultiBinary
- 支援單個或二進位值的矩陣,用於按住按鈕或智能體是否具有物件MultiDiscrete
- 支援具有多個軸的多個離散值,用於控制器動作Text
- 支援字串,用於傳遞智能體訊息、任務詳細資訊等
複合 Spaces¶
通常,環境 space 需要將基本 space 連接在一起,以用於向量化環境、獨立智能體或 space 的可讀性。
實用函數¶
Gymnasium 包含許多有用的實用函數,用於扁平化和取消扁平化 space。這對於將資訊傳遞到神經網路可能很重要。
utils.flatdim
- 扁平化 space 將包含的維度數utils.flatten_space
- 扁平化 space,utils.flattened
space 實例將包含在其中utils.flatten
- 扁平化 space 的實例,該實例包含在 space 的扁平化版本中utils.unflatten
-utils.flatten_space
函數的反向操作
向量實用函數¶
當向量化環境時,有必要修改觀察和動作 space 以獲得新的批次 space 大小。因此,Gymnasium 提供了許多在使用向量環境的 space 時使用的額外函數。
vector.utils.batch_space
- 將 space 轉換為n
個使用者的等效 spacevector.utils.concatenate
- 將 space 的樣本串連到預先產生的 space 中vector.utils.iterate
- 迭代批次 space 的樣本vector.utils.create_empty_array
- 為 space 建立空樣本(通常與concatenate
一起使用)vector.utils.create_shared_memory
- 為非同步(多處理)環境建立共享記憶體vector.utils.read_from_shared_memory
- 為非同步(多處理)環境讀取共享記憶體vector.utils.write_to_shared_memory
- 寫入非同步(多處理)環境的共享記憶體