Stable Baselines官方文档中文版 Github CSDN
尝试翻译官方文档,水平有限,如有错误万望指正
Asynchronous Advantage Actor Critic (A3C)的同步、确定性变体。它使用多个workers来避免使用重播缓存。
-
要点核心
- 原始文献: https://arxiv.org/abs/1602.01783
- OpenAI 博客: https://openai.com/blog/baselines-acktr-a2c/
python -m stable_baselines.a2c.run_atari
在Atari游戏以 40M frames = 10M timesteps运行算法。更多选项参见帮助文档(-h
)python -m stable_baselines.a2c.run_mujoco
在Mujoco环境以1M frames运行算法
-
适用情况
-
迭代策略:✔️
-
多进程:✔️
-
Gym空间:
Space Action Observation Discrete ✔️ ✔️ Box ✔️ ✔️ MultiDiscrete ✔️ ✔️ MultiBinary ✔️ ✔️
-
-
案例
用4进程在CartPole-v1上训练A2C agent。
import gymfrom stable_baselines.common.policies import MlpPolicy from stable_baselines.common.vec_env import SubprocVecEnv from stable_baselines import A2C# multiprocess environment n_cpu = 4 env = SubprocVecEnv([lambda: gym.make('CartPole-v1') for i in range(n_cpu)])model = A2C(MlpPolicy, env, verbose=1) model.learn(total_timesteps=25000) model.save("a2c_cartpole")del model # remove to demonstrate saving and loadingmodel = A2C.load("a2c_cartpole")obs = env.reset() while True:action, _states = model.predict(obs)obs, rewards, dones, info = env.step(action)env.render()
-
参数
stable_baselines.a2c.A2C(policy, env, gamma=0.99, n_steps=5, vf_coef=0.25, ent_coef=0.01, max_grad_norm=0.5, learning_rate=0.0007, alpha=0.99, epsilon=1e-05, lr_schedule='constant', verbose=0, tensorboard_log=None, _init_setup_model=True, policy_kwargs=None, full_tensorboard_log=False)
A2C(Adavantage Actor Critic)模型类, https://arxiv.org/abs/1602.01783
参数 数据类型 意义 policy ActorCriticPolicy or str 所用策略模型(MlpPolicy, CnnPolicy, CnnLstmPolicy, …) env Gym environment or str 学习所用环境(如果注册在Gym,可以是str) gamma float 贴现因子 n_steps int 运行环境每次更新所用时间步(例如:当n_env是同时运行的环境副本数量时,batch=n_steps*n_env) vf_coef float 用于损失函数的价值函数系数 ent_coef float 损失函数的信息熵系数 max_grad_norm float 梯度裁剪的最大值 learning_rate float 学习率 alpha float RMSProp衰减参数(默认:0.99) epsilon float RMSProp epsilon(稳定RMSProp更新中分母的平方根计算)(默认1e-5) lr_schedule str 更新学习率的调度程序类型(‘linear’, ‘constant’, ‘double_linear_con’, ‘middle_drop’ or ‘double_middle_drop’) verbose int 日志信息级别:0None;1训练信息;2tensorflow调试 tensorboard_log str tensorboard的日志位置(如果时None,没有日志) _init_setup_model bool 实例化创建过程中是否建立网络(只用于载入) policy_kwargs dict 创建过程中传递给策略的额外参数 full_tensorboard_log bool 当使用tensorboard时,是否记录额外日志(这个日志会占用大量空间) -
action_probability(observation, state=None, mask=None, actions=None, logp=False)
如果
actions
时None
,那么从给定观测中获取模型的行动概率分布。输出取决于行动空间:
- 离散:每个可能行动的概率
- Box:行动输出的均值和标准差
然而,如果
actions
不是None
,这个函数会返回给定行动与参数(观测,状态,…)用于此模型的概率。对于离散行动空间,它返回概率密度;对于连续行动空间,则是概率密度。这是因为在连续空间,概率密度总是0,更详细的解释见 http://blog.christianperone.com/2019/01/参数 数据类型 意义 observation np.ndarray 输入观测 state np.ndarray 最新状态(可以时None,用于迭代策略) mask np.ndarray 最新掩码(可以时None,用于迭代策略) actions np.ndarray (可选参数)为计算模型为每个给定参数选择给定行动的似然。行动和观测必须具有相同数目(None返回完全动作分布概率) logp bool (可选参数)当指定行动,返回log空间的概率。如果action是None,则此参数无效 返回:(np.ndarray)模型的(log)行动概率
-
get_env()
返回当前环境(如果没有定义可以是None)
返回:(Gym Environment)当前环境
-
get_parameter_list()
获取模型参数的tensorflow变量
包含连续训练(保存/载入)所用的所有必要变量
返回:(list)tensorflow变量列表
-
get_parameters()
获取当前模型参数作为变量名字典 -> ndarray
返回:(OrderedDict)变量名字典 -> 模型参数的ndarray
-
learn(total_timesteps, callback=None, seed=None, log_interval=100, tb_log_name=‘A2C’, reset_num_timesteps=True)
返回一个训练好的模型
参数 数据类型 意义 total_timesteps int 训练用样本总数 seed int 训练用初始值,如果None:保持当前种子 callback function (dict, dict) 与算法状态的每步调用的布尔函数。采用局部或全局变量。如果它返回false,训练被终止 log_interval int 记录日志之前的时间步数 tb_log_name str 运行tensorboard日志的名称 reset_num_timesteps bool 是否重置当前时间步数(日志中使用) 返回:(BaseRLModel) 训练好的模型
-
**classmethod load(load_path, env=None, kwargs)
从文件中载入模型
参数 数据类型 意义 load_path str or file-like 文件路径 env Gym Envrionment 载入模型运行的新环境(如果你只是从训练好的模型来做预测可以是None) kwargs 载入过程中能改变模型的额外 -
load_parameters(load_path_or_dict, exact_match=True)
从文件或字典中载入模型参数
字典关键字是tensorflow变量名,可以用
get_parameters
函数获取。如果exact_match
是True
,字典应该包含所有模型参数的关键字,否则报错RunTimeError。如果是False,只有字典包含的变量会被更新。此函数并不载入agent的超参数
警告:
此函数不更新训练器/优化器的变量(例如:momentum)。因为使用此函数的这种训练可能会导致低优化结果
参数 数据类型 意义 load_path_or_dict str or file-like 保存参数或变量名字典位置->载入的是ndarrays exact_match bool 如果是True,期望载入关键字包含模型所有变量的字典;如果是False,只载入字典中提及的参数。默认True -
predict(observation, state=None, mask=None, deterministic=False)
获取从参数得到的模型行动
参数 数据类型 意义 observation np.ndarray 输入观测 state np.ndarray 最新状态(可以时None,用于迭代策略) mask np.ndarray 最新掩码(可以时None,用于迭代策略) deterministic bool 是否返回确定性的行动 返回:(np.ndarray, np.ndarray) 模型的行动和下一状态(用于迭代策略)
-
pretrain(dataset, n_epochs=10, learning_rate=0.0001, adam_epsilon=1e-08, val_interval=None)
用行为克隆预训练一个模型:在给定专家数据集上的监督学习
目前只支持Box和离散空间
参数 数据类型 意义 dataset ExpertDataset 数据集管理器 n_epochs int 训练集上的迭代次数 learning_rate float 学习率 adam_epsilon float adam优化器的 ϵ \epsilon ϵ 值 val_interval int 报告每代的训练和验证损失。默认最大纪元数的十分之一 返回:(BaseRLModel) 预训练好的模型
-
save(save_path)
保存当前参数到文件
参数 数据类型 意义 save_path str or file-like object 保存位置 -
set_env(env)
检查环境的有效性,如果是一致的,将其设置为当前环境
参数 数据类型 意义 env Gym Environment x学习一个策略的环境 -
setup_model()
创建训练模型所必须的函数的tensorflow图表
-