【Spinning Up】 运行实验

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

  • hidact分别控制我们要训练的神经网络的隐藏层的大小(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.pyDEFAULT_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来配置参数并运行相应算法,详见官方文档。

你可能感兴趣的:(强化学习)