schola.sb3.action_space_patch.HybridDistribution
类定义
class schola.sb3.action_space_patch.HybridDistribution( distributions, discrete_norm_factor=1.0, continuous_norm_factor=1.0)支持离散和连续子分布的复合分布。
参数
分布
类型: OrderedDict[str, Distribution]
用于复合分布的分布字典。
离散归一化因子
类型: float, 可选
默认值: 1.0
离散动作的归一化因子。
连续归一化因子
类型: float, 可选
默认值: 1.0
连续动作的归一化因子。
属性
分布
类型: OrderedDict[str, Distribution]
用于复合分布的分布字典。
属性
action_dim
类型: int (属性)
与此分布对应的动作张量的大小。
返回: 与此分布对应的动作张量的大小。
action_dims
类型: Dict[str, int] (属性)
分布的每个分支对应的动作张量的大小。
返回: 一个将分布分支映射到该分支对应动作张量大小的字典。
layer_dim
类型: int (属性)
此分布所需的神经元数量。
返回: 此分布所需的神经元数量。
layer_dims
类型: Dict[str, int] (属性)
每个分布分支所需的神经元数量。
返回: 一个将分布分支映射到所需神经元数量的字典。
log_std_dim
类型: int (属性)
对数标准差所需的神经元数量。
返回: 对数标准差所需的神经元数量。
log_std_dims
类型: Dict[str, int] (属性)
每个分支对数标准差所需的神经元数量。
返回: 一个将分布分支映射到对数标准差所需神经元数量的字典。
方法
__init__
__init__(distributions, discrete_norm_factor=1.0, continuous_norm_factor=1.0)参数
- distributions (
OrderedDict) – 用于复合分布的分布字典 - discrete_norm_factor (
float, 可选) – 离散动作的归一化因子,默认为 1.0 - continuous_norm_factor (
float, 可选) – 连续动作的归一化因子,默认为 1.0
action_generator
action_generator(action)接受来自此分布的动作样本,并生成与分布的每个分支相对应的动作(例如,如果我们有两个 box 空间,它将生成从这些分布中采样的 2 个值的序列)。
参数
- action (
th.Tensor) – 用于生成子动作的动作
生成: th.Tensor – 与分布分支对应的子动作
返回类型: Iterable[Tensor]
actions_from_params
actions_from_params(action_logits, log_std, deterministic=False)根据其参数从概率分布返回样本。
参数
- action_logits (
Tensor) – 动作 logits - log_std (
Tensor) – 对数标准差 - deterministic (
bool, 可选) – 是否返回确定性动作,默认为 False
返回: Tensor – 采样动作
entropy
entropy()返回概率的香农熵。
返回: Tensor – 熵,如果未知解析形式则为 None
get_actions
get_actions(deterministic=False)根据概率分布返回动作。
参数
- deterministic (
bool, 可选) – 是否返回确定性动作,默认为 False
返回: 采样动作
log_prob
log_prob(actions)根据分布获取动作的对数概率。
参数
- actions (
Tensor) – 要评估的动作
返回: Tensor – 对数概率
log_prob_from_params
log_prob_from_params(mean_actions, log_std)计算给定分布参数下采取某个动作的对数概率。
参数
- mean_actions (
Tensor) – 平均动作 - log_std (
Tensor) – 对数标准差
返回: Tuple[Tensor, Tensor] – 对数概率和熵
map_dists
map_dists(func, normalize=False)将一个函数映射到复合分布中的各个分布上。
参数
- func (
Callable[[Distribution], Any]) – 要映射到分布上的函数 - normalize (
bool, 可选) – 是否使用归一化因子对函数输出进行归一化,默认为 False
mode
mode()从概率分布返回最可能的动作(确定性输出)。
返回: Tensor – 随机动作
proba_distribution
proba_distribution(mean_actions, log_std)根据其参数(均值、标准差)创建分布。
参数
- mean_actions (
Tensor) – 平均动作 - log_std (
Tensor) – 对数标准差
proba_distribution_net
proba_distribution_net(latent_dim, log_std_init=0.0)创建代表该分布的层和参数:一个输出将是高斯分布的均值,另一个参数将是标准差(实际上是对数标准差,以便允许负值)。
参数
- latent_dim (
int) – 策略最后一层的维度(在动作层之前) - log_std_init (
float, 可选) – 对数标准差的初始值,默认为 0.0
sample
sample()从概率分布返回一个样本。
返回: Tensor – 随机动作