1. 从命令行启动
格式为:
python -m spinup.run [algo_name] [experiment_flags]
例如:
python -m spinup.run ppo --exp_name ppo_ant --env Ant-v2 --clip_ratio 0.1 0.2
--hid[h] [32,32] [64,32] --act torch.nn.Tanh --seed 0 10 20 --dt
--data_dir path/to/data
解释
:
含义为:
在
Ant-v2
Gym环境中运行
PPO
算法,同时由各个参数来控制相关设置
。默认情况下,会运行
Pytorch
版本的实现(除了
TRPO
,因为Spinning Up目前没有相应的Pytorch实现)。所以如果想运行
Tensorflow
版本的
ppo
,可以将上述命令中的
ppo
替换为
ppo_tf1
。
-
hid
和
act
分别控制我们要训练的神经网络的隐藏层的大小(hidden size)和激活函数(activation function)的类型;
hid
后面的
[h]
表示其缩写,将用于保存目录(save directory)的名字中。 -
seed
用来设置随机数生成器的种子,由于强化学习算法一般都具有很高的方差(variance),所以我们设置多个种子来了解性能如何变化。 -
dt
确保了保存目录(save directory)的名字上会有相应的时间戳(timestamp)(默认情况下,保存文件夹名字上没有时间戳;也可以通过在
spinup/user_config.py
中设置
FORCE_DATESTAMP=True
来实现。)。 -
data_dir
设置保存结果的文件夹(save folder for results)(默认的保存结果文件夹在
spinup
的子文件夹
data
中,由
spinup/user_config.py
的
DEFAULT_DATA_DIR
来设定)。
备注
:更多相关参数设置及其含义可以参见官方文档或者运行:python -m spinup.m [algo_name] --help
选择Pytorch或者Tensorflow版本
如果想要选择Pytorch版本,则调用格式为:
python -m spinup.run [algo_name]_pytorch
相应的,如果想要选择Tensorflow版本的,则调用格式为:
python -m spinup.run [algo_name]_tf1
备注
:如果名字后无后缀(即: _pytorch或_tf1),则由
spinup/usr_config.py
来设置默认调用的版本)
2. 从脚本启动
在
spinup
中,每个算法都实现为一个相应的python函数,因此可以通过调
spinup
包来实现进行算法的调用。例如:
from spinup import ppo_pytorch as ppo
利用gym建立环境,并运行相应算法:
from spinup import ppo_tf1 as ppo
import tensorflow as tf
import gym
env_fn = lambda : gym.make('LunarLander-v2')
ac_kwargs = dict(hidden_sizes=[64,64], activation=tf.nn.relu)
logger_kwargs = dict(output_dir='path/to/output_dir', exp_name='experiment_name')
ppo(env_fn=env_fn, ac_kwargs=ac_kwargs, steps_per_epoch=5000, epochs=250, logger_kwargs=logger_kwargs)
备注
:也可以使用
Spinup
中自带的
ExperimentGrid
来配置参数并运行相应算法,详见
官方文档
。