我已经创建了一个 Gym 环境,并且能够通过 PPO 从稳定基线 3 对其进行训练。但是,我没有得到想要的结果。该代理似乎陷入了局部最优而不是全局最优。然而,即使达到这个阶段也需要大量的计算,而且我不确定我是否有正确的参数设置。我想对此自定义环境执行超参数调整,并且我正在遵循此示例 - https://rl-baselines3-zoo.readthedocs.io/en/master/guide/tuning.html#hyperparameters-search-space
我无法遵循该文档。
它说他们使用Optuna进行优化。然而,没有任何地方提到必须首先安装它。我们需要这样做吗?
我使用相同的结构运行我的代码
python train.py --algo ppo --env MountainCar-v0 -n 50000 -optimize --n-trials 1000 --n-jobs 2 --sampler tpe --pruner median
我的环境
python mobile_robot_scripts/train_youbot_camera.py --algo ppo --env youbotCamGymEnv -n 10000 --n-trials 1000 --n-jobs 2 --sampler tpe --pruner median
现在,我认为有几件事是错误的。与默认的 MountainCar-v0 示例不同,我没有在gym中注册我的环境,因为没有任何地方提到需要注册,或者除了gym.make()方便之外还有任何优势。我没有安装 Optuna。在运行代码时它仍然运行,但我认为它不会进行任何超参数调整,而只是继续正常训练。
我想知道我应该如何进一步进行实际执行超参数调整。正如您所看到的,我几乎使用默认值。这是我的代码供参考:-
#add parent dir to find package. Only needed for source code build, pip install doesn't need it.
import os, inspect
currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
parentdir = os.path.dirname(os.path.dirname(currentdir))
os.sys.path.insert(0, parentdir)
from youbotCamGymEnv import youbotCamGymEnv
import datetime
from stable_baselines3 import ppo
from stable_baselines3.common.env_checker import check_env
def main():
env = youbotCamGymEnv(renders=False, isDiscrete=False)
# It will check your custom environment and output additional warnings if needed
check_env(env)
model = ppo.PPO("CnnPolicy", env, verbose=1)
model.learn(total_timesteps = 50000)
print("############Training completed################")
model.save(os.path.join(currentdir,"youbot_camera_trajectory"))
# del model
# env = youbotCamGymEnv(renders=True, isDiscrete=False)
model = ppo.PPO.load(os.path.join(currentdir,"youbot_camera_trajectory"))
# obs = env.reset()
# for i in range(1000):
# action, _states = model.predict(obs, deterministic=True)
# obs, reward, done, info = env.step(action)
# # print("reward is ", reward)
# env.render(mode='human')
# if done:
# obs = env.reset()
# env.close()
if __name__ == '__main__':
main()
我认为你使用 RL Zoo 的方式是错误的。您不应该运行自己的
train.py
(train_youbot_camera.py)。您没有在脚本中传递任何参数,因此 --algo ppo --env youbotCamGymEnv -n 10000 --n-trials 1000 --n-jobs 2 --sampler tpe --pruner median
这些参数实际上都没有传递到您的程序中。
根据文档,仅当您位于 RL Zoo 文件夹内时才运行
python train.py
。否则,您应该运行python -m rl_zoo3.train
。另外,我认为你不需要编写自己的训练脚本,因为rl_zoo3的目标是为你准备一切。
回到你的问题,我认为Optuna是在安装rl_zoo3时安装的。
您应该注册您的环境,文档中提到了这一点。检查这个https://rl-baselines3-zoo.readthedocs.io/en/master/guide/custom_env.html