baselines算法库common/vec_env/util.py模块分析
2023-09-11 14:19:19 时间
util.py模块代码:
""" Helpers for dealing with vectorized environments. """ from collections import OrderedDict import gym import numpy as np def copy_obs_dict(obs): """ Deep-copy an observation dict. """ return {k: np.copy(v) for k, v in obs.items()} def dict_to_obs(obs_dict): """ Convert an observation dict into a raw array if the original observation space was not a Dict space. """ if set(obs_dict.keys()) == {None}: return obs_dict[None] return obs_dict def obs_space_info(obs_space): """ Get dict-structured information about a gym.Space. Returns: A tuple (keys, shapes, dtypes): keys: a list of dict keys. shapes: a dict mapping keys to shapes. dtypes: a dict mapping keys to dtypes. """ if isinstance(obs_space, gym.spaces.Dict): assert isinstance(obs_space.spaces, OrderedDict) subspaces = obs_space.spaces elif isinstance(obs_space, gym.spaces.Tuple): assert isinstance(obs_space.spaces, tuple) subspaces = {i: obs_space.spaces[i] for i in range(len(obs_space.spaces))} else: subspaces = {None: obs_space} keys = [] shapes = {} dtypes = {} for key, box in subspaces.items(): keys.append(key) shapes[key] = box.shape dtypes[key] = box.dtype return keys, shapes, dtypes def obs_to_dict(obs): """ Convert an observation into a dict. """ if isinstance(obs, dict): return obs return {None: obs}
函数:
def copy_obs_dict(obs):
def obs_to_dict(obs_dict):
假设传入的observation都是dict类型的。
在函数
obs_to_dict
中,如果传入的observation不是dict类型的则将其转为dict类型,此时的key值设置为None。
函数
def dict_to_obs(obs_dict)
假设输入的是key为None的dict类型的observation,将其dict类型转为np.array类型的observation。
如果输入的不是key为None的dict类型的observation则直接将其返回。
函数
def obs_space_info(obs_space):
输入参数为observation的spaces变量。
if isinstance(obs_space, gym.spaces.Dict): assert isinstance(obs_space.spaces, OrderedDict) subspaces = obs_space.spaces elif isinstance(obs_space, gym.spaces.Tuple): assert isinstance(obs_space.spaces, tuple) subspaces = {i: obs_space.spaces[i] for i in range(len(obs_space.spaces))} else: subspaces = {None: obs_space}
首先将env.observation_sapce.spaces变量进行判断,将其转为dict类型。
对env.observation_space.spaces进行信息提取,得到:
Returns:
A tuple (keys, shapes, dtypes):
keys: a list of dict keys.
shapes: a dict mapping keys to shapes.
dtypes: a dict mapping keys to dtypes.
最后返回信息的形式为tuple类型。
====================================================
相关文章
- hashlib模块--摘要算法
- Java实现 蓝桥杯VIP 算法训练 排列问题
- Java实现蓝桥杯VIP 算法训练 sign函数
- 算法入门--快速排序
- (算法)Word Break
- 简单易学的机器学习算法—基于密度的聚类算法DBSCAN
- OpenCV每日函数 计算摄影模块(3) HDR动态范围成像算法
- 【YOLOv8/YOLOv7/YOLOv5/YOLOv4/Faster-rcnn系列算法改进NO.62】结合NeurIPS 2022年GhostnetV2网络模块
- VSCode一键接入Notebook体验算法套件快速完成水表读数
- BFGS算法
- 【Python算法】实验1-求最大公约数
- 图解分布式一致性协议 Paxos 算法【BAT 面试题宝库附详尽答案解析】
- 三白话经典算法系列 Shell排序实现
- C++ 实现十大排序算法
- 深度学习必备:随机梯度下降(SGD)优化算法及可视化
- Keras之MLPR:利用MLPR算法(3to1【窗口法】+【Input(3)→(12+8)(relu)→O(mse)】)实现根据历史航空旅客数量数据集(时间序列数据)预测下月乘客数量问题
- 机器学习算法三之Python机器学习库sklearn简介
- 【Python】蒙特卡洛模拟 | PRNG 伪随机数发生器 | LCG 线性同余算法 | 马特赛特旋转算法 | Python Random 模块