• Stable Baselines/RL算法/Policy Networks

    Stable Baselines官方文档中文版 Github CSDN 尝试翻译官方文档,水平有限,如有错误万望指正

    Stable-baselines提供一系列默认策略(policies),可与大部分行动空间同用。你可以指定所用模型类的policy_kwargs参数来更改默认策略。然后这些kwargs参数会传给实例化的策略(参见案例: Custom Policy Network)如果你希望控制更多策略架构,你也可以创建一个自定义环境(具体参见:Custom Policy Network)。

    CnnPolicies只用于图像。MplPolicies用于其他特征类型(例如:机器人关节)

    警告:

    对于所有算法(除了DDPGTD3SAC),训练和测试过程中会剪掉连续行动(避免边界溢出错误)

  • 可用策略

    | 可用策略 | 策略简介 | | —————————————————————————————— | —————————————————————————————— | | MlpPolicy | Policy object that implements actor critic, using a MLP (2 layers of 64) | | MlpLstmPolicy | Policy object that implements actor critic, using LSTMs with a MLP feature extraction | | MlpLnLstmPolicy | Policy object that implements actor critic, using a layer normalized LSTMs with a MLP feature extraction | | CnnPolicy | Policy object that implements actor critic, using a CNN (the nature CNN) | | CnnLstmPolicy | Policy object that implements actor critic, using LSTMs with a CNN feature extraction | | CnnLnLstmPolicy | Policy object that implements actor critic, using a layer normalized LSTMs with a CNN feature extraction |

  • 基础类Base Classes

    1. stable_baselines.common.policies.BasePolicy(sess, ob_space, ac_space, n_env, n_steps, n_batch, reuse=False, scale=False, obs_phs=None, add_action_ph=False)

    基础策略对象(Policy Object

    | 参数 | 数据类型 | 意义 | | ——————- | —————————————————— | —————————————————————————— | | sess | TensorFlow session | 当前TensorFlow会话 | | ob_space | Gym Space | 环境的观测空间 | | ac_space | Gym Space | 环境的行动空间 | | n_env | int | 运行的环境数量 | | n_steps | int | 每个环境运行的步数 | | n_batch | int | 运行批次的数量(n_envs * n_steps) | | reuse | bool | 策略是否可重用 | | scale | bool | 是否缩放输入 | | obs_phs | TensorFlow Tensor, TensorFlow Tensor | 一个元组,分别包含观察占位符和已处理观察占位符的重写 | | add_action_ph | bool | 是否创建行动占位符 |

    • action_ph

      tendorflow.Tensor: 行动的占位符,形状(self.n_batch)+ self.ac_space.shape

    • initial_state

      策略的初始状态,对于前馈策略,None。对于迭代策略,shape(self.n_env,)+state_shape的NumPy数组

    • is_discrete

      bool: 行动空间是否离散

    • obs_ph

      tendorflow.Tensor: 观测的占位符,shape(self.n_batch,)+self.ob_space.shape

    • proba_step(obs, state=None,mask=None)

      返回单步的行动概率

      | 参数 | 数据类型 | 意义 | | ——- | ———————— | ———————————— | | obs | [float] or [int] | 环境的当前观察 | | state | [float] | 最新状态(用于迭代策略) | | mask | [float] | 最新掩码(用于迭代策略) |

      返回:([float])行动概率

    • processed_obs

      tendorflow.Tensor: 已处理的观测。shape(self.n_batch,)+self.ob_space.shape

      处理形式取决于观测空间类型以及缩放参数是否传递给构造器;更多信息参见:observation_input

    • step(obs, state=None,mask=None)

      返回单步的策略

      | 参数 | 数据类型 | 意义 | | ——- | ———————— | ———————————— | | obs | [float] or [int] | 环境的当前观察 | | state | [float] | 最新状态(用于迭代策略) | | mask | [float] | 最新掩码(用于迭代策略) |

      返回:([float], [float], [float], [float]) 行动(actions),值(values),状态(states),neglogp

  • class ActorCriticPolicy

    1. stable_baselines.common.policies.ActorCriticPolicy(sess, ob_space, ac_space, n_env, n_steps, n_batch, reuse=False, scale=False)

    实现actor critic的策略对象

    | 参数 | 数据类型 | 意义 | | ———— | ————————— | ————————————————— | | sess | TensorFlow session | 当前TensorFlow会话 | | ob_space | Gym Space | 环境的观测空间 | | ac_space | Gym Space | 环境的行动空间 | | n_env | int | 运行的环境数量 | | n_steps | int | 每个环境运行的步数 | | n_batch | int | 运行批次的数量(n_envs * n_steps) | | reuse | bool | 策略是否可重用 | | scale | bool | 是否缩放输入 |

    • action

      tendorflow.Tensor: 随机行动,shape(self.n_batch,)+self.ac_space.shape

    • deterministic_action

      tendorflow.Tensor: 确定性行动,shape (self.n_batch, ) + self.ac_space.shape

    • neglogp

      tendorflow.Tensor: self.action采样的行动的负的log似然

    • pdtype

      概率分布类型(ProbabilityDistributionType):随机行动分布的类型

    • policy

      tendorflow.Tensor: 策略输出,例如logits

    • policy_proba

      tendorflow.Tensor: 概率分布的参数。取决于pdtype

    • proba_distribution

      概率分布(ProbabilityDistribution):随机行动的分布

    • step(obs, state=None, mask=None, deterministic=False)

      返回单个步骤的策略

      | 参数 | 数据类型 | 意义 | | ——————- | ———————— | ———————————— | | obs | [float] or [int] | 环境的当前观察 | | state | [float] | 最新状态(用于迭代策略) | | mask | [float] | 最新掩码(用于迭代策略) | | deterministic | bool | 是否返回确定性的行动 |

      返回:([float], [float], [float], [float]) actions, values, states, neglogp

    • value(obs, state=None, mask=None)

      返回单步骤的值

      | 参数 | 数据类型 | 意义 | | ——- | ———————— | ———————————— | | obs | [float] or [int] | 环境的当前观察 | | state | [float] | 最新状态(用于迭代策略) | | mask | [float] | 最新掩码(用于迭代策略) |

      返回:([float])行动的关联值

    • value_flat

      tendorflow.Tensor: 价值估计, shape (self.n_batch, )

    • value_fn

      tendorflow.Tensor: 价值估计,shape (self.n_batch, 1)

  • class FeedForwardPolicy

    1. stable_baselines.common.policies.FeedForwardPolicy(sess, ob_space, ac_space, n_env, n_steps, n_batch, reuse=False, layers=None, net_arch=None, act_fun=<MagicMock id='139636329165320'>, cnn_extractor=<function nature_cnn>, feature_extraction='cnn', **kwargs)

    用前馈神经网络实现actor critic的策略对象

    | 参数 | 数据类型 | 意义 | | ————————— | —————————————————————————————- | —————————————————————————————— | | sess | TensorFlow session | 当前TensorFlow会话 | | ob_space | Gym Space | 环境的观测空间 | | ac_space | Gym Space | 环境的行动空间 | | n_env | int | 运行的环境数量 | | n_steps | int | 每个环境运行的步数 | | n_batch | int | 运行批次的数量(n_envs n_steps) | | reuse | bool | 策略是否可重用 | | layers | [int] | (弃用,用net_arch替代)策略用神经网络的大小(如果是None,默认[64,64]) | | net_arch | list | actor-critic策略网络结构的规范(更多细节参见命令mlp_extractor文档) | | act_fun | tf.func | 神经网络用的激活函数 | | cnn_extractor | function (TensorFlow Tensor, *kwargs): (TensorFlow Tensor) | CNN特征提取 | | feature_extraction | str | 特征提取类型(’cnn’或’mlp’) | | kwargs | dict | 自然CNN特征提取的额外关键字参数 |

    • proba_step(obs, state=None, mask=None)

      返回单步骤的行动概率

      | 参数 | 数据类型 | 意义 | | ——- | ———————— | ———————————— | | obs | [float] or [int] | 环境的当前观察 | | state | [float] | 最新状态(用于迭代策略) | | mask | [float] | 最新掩码(用于迭代策略) |

      返回:([float])行动概率

    • step(obs, state=None, mask= None, deterministic= False)

      返回单个步骤的策略

      | 参数 | 数据类型 | 意义 | | ——————- | ———————— | ———————————— | | obs | [float] or [int] | 环境的当前观察 | | state | [float] | 最新状态(用于迭代策略) | | mask | [float] | 最新掩码(用于迭代策略) | | deterministic | bool | 是否返回确定性的行动 |

      返回:([float], [float], [float], [float]) actions, values, states, neglogp

    • value(obs, state=None, mask=None)

      返回单步骤的值

      | 参数 | 数据类型 | 意义 | | ——- | ———————— | ———————————— | | obs | [float] or [int] | 环境的当前观察 | | state | [float] | 最新状态(用于迭代策略) | | mask | [float] | 最新掩码(用于迭代策略) |

      返回:([float])行动的关联值

  • class LstmPolicy

    1. stable_baselines.common.policies.LstmPolicy(sess, ob_space, ac_space, n_env, n_steps, n_batch, n_lstm=256, reuse=False, layers=None, net_arch=None, act_fun=<MagicMock id='139636329067856'>, cnn_extractor=<function nature_cnn>, layer_norm=False, feature_extraction='cnn', **kwargs)

    用LSTM实现actor critic的策略对象

    | 参数 | 数据类型 | 意义 | | ————————— | —————————————————————————————- | —————————————————————————————— | | sess | TensorFlow session | 当前TensorFlow会话 | | ob_space | Gym Space | 环境的观测空间 | | ac_space | Gym Space | 环境的行动空间 | | n_env | int | 运行的环境数量 | | n_steps | int | 每个环境运行的步数 | | n_batch | int | 运行批次的数量(n_envs n_steps) | | n_lstm | int | LSTM cells的数量(用于迭代策略) | | reuse | bool | 策略是否可重用 | | layers | [int] | (弃用,用net_arch替代)策略用神经网络的大小(如果是None,默认[64,64]) | | net_arch | list | actor-critic策略网络结构的规范(更多细节参见命令mlp_extractor文档) | | act_fun | tf.func | 神经网络用的激活函数 | | cnn_extractor | function (TensorFlow Tensor, *kwargs): (TensorFlow Tensor) | CNN特征提取 | | layer_norm | bool | 是否用层标准化LSTMs | | feature_extraction | str | 特征提取类型(’cnn’或’mlp’) | | kwargs | dict | 自然CNN特征提取的额外关键字参数 |

    • proba_step(obs, state=None, mask=None)

      返回单步骤的行动概率

      | 参数 | 数据类型 | 意义 | | ——- | ———————— | ———————————— | | obs | [float] or [int] | 环境的当前观察 | | state | [float] | 最新状态(用于迭代策略) | | mask | [float] | 最新掩码(用于迭代策略) |

      返回:([float])行动概率

    • step(obs, state=None, mask= None, deterministic= False)

      返回单个步骤的策略

      | 参数 | 数据类型 | 意义 | | ——————- | ———————— | ———————————— | | obs | [float] or [int] | 环境的当前观察 | | state | [float] | 最新状态(用于迭代策略) | | mask | [float] | 最新掩码(用于迭代策略) | | deterministic | bool | 是否返回确定性的行动 |

      返回:([float], [float], [float], [float]) actions, values, states, neglogp

    • value(obs, state=None, mask=None)

      返回单步骤的值

      | 参数 | 数据类型 | 意义 | | ——- | ———————— | ———————————— | | obs | [float] or [int] | 环境的当前观察 | | state | [float] | 最新状态(用于迭代策略) | | mask | [float] | 最新掩码(用于迭代策略) |

      返回:([float])行动的关联值

  • MLP Policies

  • class MlpPolicy

    1. stable_baselines.common.policies.MlpPolicy(sess, ob_space, ac_space, n_env, n_steps, n_batch, reuse=False, **_kwargs)

    MLP (2 layers of 64)实现actor critic的策略对象

    | 参数 | 数据类型 | 意义 | | ———— | ————————— | ————————————————— | | sess | TensorFlow session | 当前TensorFlow会话 | | ob_space | Gym Space | 环境的观测空间 | | ac_space | Gym Space | 环境的行动空间 | | n_env | int | 运行的环境数量 | | n_steps | int | 每个环境运行的步数 | | n_batch | int | 运行批次的数量(n_envs * n_steps) | | reuse | bool | 策略是否可重用 | | _kwargs | dict | 自然CNN特征提取的额外关键字参数 |

  • class MlpLstmPolicy

    用通过MLP特征提取的LSTM实现actor critic的策略对象

    | 参数 | 数据类型 | 意义 | | ———— | ————————— | ————————————————— | | sess | TensorFlow session | 当前TensorFlow会话 | | ob_space | Gym Space | 环境的观测空间 | | ac_space | Gym Space | 环境的行动空间 | | n_env | int | 运行的环境数量 | | n_steps | int | 每个环境运行的步数 | | n_batch | int | 运行批次的数量(n_envs * n_steps) | | reuse | bool | 策略是否可重用 | | kwargs | dict | 自然CNN特征提取的额外关键字参数 |

  • class MlpLnLstmPolicy

    1. stable_baselines.common.policies.MlpLnLstmPolicy(sess, ob_space, ac_space, n_env, n_steps, n_batch, n_lstm=256, reuse=False, **_kwargs)

    用通过MLP特征提取标准化的LSTM层实现actor critic的策略对象

    | 参数 | 数据类型 | 意义 | | ———— | ————————— | ————————————————— | | sess | TensorFlow session | 当前TensorFlow会话 | | ob_space | Gym Space | 环境的观测空间 | | ac_space | Gym Space | 环境的行动空间 | | n_env | int | 运行的环境数量 | | n_steps | int | 每个环境运行的步数 | | n_batch | int | 运行批次的数量(n_envs * n_steps) | | reuse | bool | 策略是否可重用 | | kwargs | dict | 自然CNN特征提取的额外关键字参数 |

  • CNN Policies

  • class CnnPolicy

    1. stable_baselines.common.policies.CnnPolicy(sess, ob_space, ac_space, n_env, n_steps, n_batch, reuse=False, **_kwargs)

    CNN (the nature CNN)实现actor critic的策略对象

    | 参数 | 数据类型 | 意义 | | ———— | ————————— | ————————————————— | | sess | TensorFlow session | 当前TensorFlow会话 | | ob_space | Gym Space | 环境的观测空间 | | ac_space | Gym Space | 环境的行动空间 | | n_env | int | 运行的环境数量 | | n_steps | int | 每个环境运行的步数 | | n_batch | int | 运行批次的数量(n_envs * n_steps) | | reuse | bool | 策略是否可重用 | | kwargs | dict | 自然CNN特征提取的额外关键字参数 |

  • class CnnLstmPolicy

    用通过CNN特征提取处理的LSTMs实现actor critic的策略对象

    | 参数 | 数据类型 | 意义 | | ———— | ————————— | ————————————————— | | sess | TensorFlow session | 当前TensorFlow会话 | | ob_space | Gym Space | 环境的观测空间 | | ac_space | Gym Space | 环境的行动空间 | | n_env | int | 运行的环境数量 | | n_steps | int | 每个环境运行的步数 | | n_batch | int | 运行批次的数量(n_envs * n_steps) | | reuse | bool | 策略是否可重用 | | kwargs | dict | 自然CNN特征提取的额外关键字参数 |

  • class CnnLnLstmPolicy

    用通过CNN特征提取标准化的LSTM层实现actor critic的策略对象

    | 参数 | 数据类型 | 意义 | | ———— | ————————— | ————————————————— | | sess | TensorFlow session | 当前TensorFlow会话 | | ob_space | Gym Space | 环境的观测空间 | | ac_space | Gym Space | 环境的行动空间 | | n_env | int | 运行的环境数量 | | n_steps | int | 每个环境运行的步数 | | n_batch | int | 运行批次的数量(n_envs * n_steps) | | reuse | bool | 策略是否可重用 | | kwargs | dict | 自然CNN特征提取的额外关键字参数 |