空間工具¶
- gymnasium.spaces.utils.flatten_space(space: Space[Any]) Box | Dict | Sequence | Tuple | Graph[source]¶
- gymnasium.spaces.utils.flatten_space(space: Box) Box
- gymnasium.spaces.utils.flatten_space(space: Discrete | MultiBinary | MultiDiscrete) Box
- gymnasium.spaces.utils.flatten_space(space: Discrete | MultiBinary | MultiDiscrete) Box
- gymnasium.spaces.utils.flatten_space(space: Discrete | MultiBinary | MultiDiscrete) Box
- gymnasium.spaces.utils.flatten_space(space: Tuple) Box | Tuple
- gymnasium.spaces.utils.flatten_space(space: Dict) Box | Dict
- gymnasium.spaces.utils.flatten_space(space: Graph) Graph
- gymnasium.spaces.utils.flatten_space(space: Text) Box
- gymnasium.spaces.utils.flatten_space(space: Sequence) Sequence
- gymnasium.spaces.utils.flatten_space(space: OneOf) Box
將一個空間儘可能地扁平化。
此函式將嘗試將
space扁平化為一個單一的gymnasium.spaces.Box空間。然而,當space是gymnasium.spaces.Graph、gymnasium.spaces.Sequence的例項,或包含gymnasium.spaces.Graph或gymnasium.spaces.Sequence空間的複合空間時,這可能無法實現。這等同於flatten(),但它作用於空間本身。對於非圖空間,結果始終是具有扁平邊界的gymnasium.spaces.Box;而對於圖空間,結果始終是gymnasium.spaces.Graph,其Graph.node_space是具有扁平邊界的Box,Graph.edge_space是具有扁平邊界的Box或None。該 Box 具有精確的flatdim()維度。扁平化原始空間的一個樣本與從扁平化空間中取樣具有相同的效果。然而,從扁平化空間中取樣不一定是可逆的。例如,從扁平化離散空間中取樣與從 Box 中取樣相同,結果可能不是整數或獨熱編碼。這可能導致錯誤或非均勻取樣。- 引數:
space – 要扁平化的空間
- 返回:
一個扁平化的 Box
- 引發:
NotImplementedError – 如果空間未在
gymnasium.spaces中定義。
- 示例 - 扁平化 spaces.Box
>>> from gymnasium.spaces import Box >>> box = Box(0.0, 1.0, shape=(3, 4, 5)) >>> box Box(0.0, 1.0, (3, 4, 5), float32) >>> flatten_space(box) Box(0.0, 1.0, (60,), float32) >>> flatten(box, box.sample()) in flatten_space(box) True
- 示例 - 扁平化 spaces.Discrete
>>> from gymnasium.spaces import Discrete >>> discrete = Discrete(5) >>> flatten_space(discrete) Box(0, 1, (5,), int64) >>> flatten(discrete, discrete.sample()) in flatten_space(discrete) True
- 示例 - 扁平化 spaces.Dict
>>> from gymnasium.spaces import Dict, Discrete, Box >>> space = Dict({"position": Discrete(2), "velocity": Box(0, 1, shape=(2, 2))}) >>> flatten_space(space) Box(0.0, 1.0, (6,), float64) >>> flatten(space, space.sample()) in flatten_space(space) True
- 示例 - 扁平化 spaces.Graph
>>> from gymnasium.spaces import Graph, Discrete, Box >>> space = Graph(node_space=Box(low=-100, high=100, shape=(3, 4)), edge_space=Discrete(5)) >>> flatten_space(space) Graph(Box(-100.0, 100.0, (12,), float32), Box(0, 1, (5,), int64)) >>> flatten(space, space.sample()) in flatten_space(space) True
- gymnasium.spaces.utils.flatten(space: Space[T], x: T) ndarray[tuple[Any, ...], dtype[Any]] | dict[str, Any] | tuple[Any, ...] | GraphInstance[source]¶
- gymnasium.spaces.utils.flatten(space: Box | MultiBinary, x: ndarray[tuple[Any, ...], dtype[Any]]) ndarray[tuple[Any, ...], dtype[Any]]
- gymnasium.spaces.utils.flatten(space: Box | MultiBinary, x: ndarray[tuple[Any, ...], dtype[Any]]) ndarray[tuple[Any, ...], dtype[Any]]
- gymnasium.spaces.utils.flatten(space: Discrete, x: int64) ndarray[tuple[Any, ...], dtype[int64]]
- gymnasium.spaces.utils.flatten(space: MultiDiscrete, x: ndarray[tuple[Any, ...], dtype[int64]]) ndarray[tuple[Any, ...], dtype[int64]]
- gymnasium.spaces.utils.flatten(space: Tuple, x: tuple[Any, ...]) tuple[Any, ...] | ndarray[tuple[Any, ...], dtype[Any]]
- gymnasium.spaces.utils.flatten(space: Dict, x: dict[str, Any]) dict[str, Any] | ndarray[tuple[Any, ...], dtype[Any]]
- gymnasium.spaces.utils.flatten(space: Graph, x: GraphInstance) GraphInstance
- gymnasium.spaces.utils.flatten(space: Text, x: str) ndarray[tuple[Any, ...], dtype[int32]]
- gymnasium.spaces.utils.flatten(space: Sequence, x: tuple[Any, ...] | Any) tuple[Any, ...] | Any
- gymnasium.spaces.utils.flatten(space: OneOf, x: tuple[int, Any]) ndarray[tuple[Any, ...], dtype[Any]]
扁平化一個空間中的資料點。
當空間中的點必須傳遞給只理解扁平浮點陣列的神經網路時,這非常有用。
- 引數:
space – 用於扁平化
x的空間x – 要扁平化的值
- 返回:
扁平化的資料點 –
對於
gymnasium.spaces.Box和gymnasium.spaces.MultiBinary,這是一個扁平化的陣列對於
gymnasium.spaces.Discrete和gymnasium.spaces.MultiDiscrete,這是一個樣本的扁平化獨熱陣列對於
gymnasium.spaces.Tuple和gymnasium.spaces.Dict,這是子空間的連線陣列(不支援圖子空間)- 對於圖空間,返回
GraphInstance,其中 GraphInstance.nodes是 n x k 陣列GraphInstance.edges是m x k 陣列
None
GraphInstance.edge_links是m x 2 陣列
None
- 對於圖空間,返回
- 引發:
NotImplementedError – 如果空間未在
gymnasium.spaces中定義。
示例
>>> from gymnasium.spaces import Box, Discrete, Tuple >>> space = Box(0, 1, shape=(3, 5)) >>> flatten(space, space.sample()).shape (15,) >>> space = Discrete(4) >>> flatten(space, 2) array([0, 0, 1, 0]) >>> space = Tuple((Box(0, 1, shape=(2,)), Box(0, 1, shape=(3,)), Discrete(3))) >>> example = ((.5, .25), (1., 0., .2), 1) >>> flatten(space, example) array([0.5 , 0.25, 1. , 0. , 0.2 , 0. , 1. , 0. ])
- gymnasium.spaces.utils.flatdim(space: Space[Any]) int[source]¶
- gymnasium.spaces.utils.flatdim(space: Box | MultiBinary) int
- gymnasium.spaces.utils.flatdim(space: Box | MultiBinary) int
- gymnasium.spaces.utils.flatdim(space: Discrete) int
- gymnasium.spaces.utils.flatdim(space: MultiDiscrete) int
- gymnasium.spaces.utils.flatdim(space: Tuple) int
- gymnasium.spaces.utils.flatdim(space: Dict) int
- gymnasium.spaces.utils.flatdim(space: Graph)
- gymnasium.spaces.utils.flatdim(space: Text) int
- gymnasium.spaces.utils.flatdim(space: OneOf) int
返回此空間的扁平化等效形式所具有的維度數。
- 引數:
space – 要返回扁平化空間維度的空間
- 返回:
扁平化空間的維度數
- 引發:
NotImplementedError – 如果空間未在
gym.spaces中定義。ValueError – 如果空間無法扁平化為
gymnasium.spaces.Box
示例
>>> from gymnasium.spaces import Dict, Discrete >>> space = Dict({"position": Discrete(2), "velocity": Discrete(3)}) >>> flatdim(space) 5
- gymnasium.spaces.utils.unflatten(space: Space[T], x: ndarray[tuple[Any, ...], dtype[Any]] | dict[str, Any] | tuple[Any, ...] | GraphInstance) T[source]¶
- gymnasium.spaces.utils.unflatten(space: Box | MultiBinary, x: ndarray[tuple[Any, ...], dtype[Any]]) ndarray[tuple[Any, ...], dtype[Any]]
- gymnasium.spaces.utils.unflatten(space: Box | MultiBinary, x: ndarray[tuple[Any, ...], dtype[Any]]) ndarray[tuple[Any, ...], dtype[Any]]
- gymnasium.spaces.utils.unflatten(space: Discrete, x: ndarray[tuple[Any, ...], dtype[int64]]) int64
- gymnasium.spaces.utils.unflatten(space: MultiDiscrete, x: ndarray[tuple[Any, ...], dtype[integer[Any]]]) ndarray[tuple[Any, ...], dtype[integer[Any]]]
- gymnasium.spaces.utils.unflatten(space: Tuple, x: ndarray[tuple[Any, ...], dtype[Any]] | tuple[Any, ...]) tuple[Any, ...]
- gymnasium.spaces.utils.unflatten(space: Dict, x: ndarray[tuple[Any, ...], dtype[Any]] | dict[str, Any]) dict[str, Any]
- gymnasium.spaces.utils.unflatten(space: Graph, x: GraphInstance) GraphInstance
- gymnasium.spaces.utils.unflatten(space: Text, x: ndarray[tuple[Any, ...], dtype[int32]]) str
- gymnasium.spaces.utils.unflatten(space: Sequence, x: tuple[Any, ...]) tuple[Any, ...] | Any
- gymnasium.spaces.utils.unflatten(space: OneOf, x: ndarray[tuple[Any, ...], dtype[Any]]) tuple[int, Any]
將扁平化的資料點恢復到空間結構。
這會反轉由
flatten()應用的變換。你必須確保space引數與flatten()呼叫時使用的相同。- 引數:
space – 用於恢復
x結構的原始空間x – 要恢復結構的陣列
- 返回:
一個結構與空間匹配的點。
- 引發:
NotImplementedError – 如果空間未在
gymnasium.spaces中定義。