稳定基线3 PPO模型已加载但不工作



我正在尝试制作一个用于玩OpenAI Gym CarRacing环境的AI代理,但我在加载保存的模型时遇到了问题。我训练它们,它们工作,我保存它们并装载它们,突然汽车甚至都不动了。我甚至试着从其他人那里下载模型,当加载时,车就不动了。

我在Jupyter笔记本的VS代码中使用Ubuntu 20.04gym==0.21.0,稳定基线3==1.6.0,python==3.7.0

import gym 
from stable_baselines3 import PPO
from stable_baselines3.common.evaluation import evaluate_policy
import os

我使环境

environment_name = "CarRacing-v0"
env = gym.make(environment_name)

我创建了PPO模型,并让它学习几千个时间步长。现在,当我评估策略时,汽车渲染为正在移动。

log_path = os.path.join('Training', 'Logs')
model = PPO("CnnPolicy", env, verbose=1, tensorboard_log=log_path)
model.learn(total_timesteps=4000)
evaluate_policy(model, env, n_eval_episodes=1, render=True)

我保存型号

ppo_path = os.path.join('Training', 'Saved Models', 'PPO_Car_Testing')
model.save(ppo_path)

现在我删除模型并加载保存的模型,当我评估它时,汽车不会移动,就好像它总是什么都不做一样。我尝试了2k个时间步长的模型学习,直到一个已经学习了200万个时间步长。

del model
model = PPO("CnnPolicy", env, verbose=1, tensorboard_log=log_path)
ppo_path_load = os.path.join('Training', 'Saved Models', 'PPO_2m_Driving_model')
model.load(ppo_path_load, env)
evaluate_policy(model, env, n_eval_episodes=1, render=True)

你知道为什么模型加载不正确吗?

您的模型似乎没有正确加载

你给了错误的代码

model = PPO("CnnPolicy", env, verbose=1, tensorboard_log=log_path)
ppo_path_load = os.path.join('Training', 'Saved Models', 'PPO_2m_Driving_model')
model.load(ppo_path_load, env)

将其更改为

model = PPO("CnnPolicy", env, verbose=1, tensorboard_log=log_path)
ppo_path_load = os.path.join('Training', 'Saved Models', 'PPO_2m_Driving_model')
model = ppo.load(ppo_path_load, env)

RLALGORITHM更改为您的Rl算法,如PPO或A2C等

model = RLALGORITHM.load(ppo_path_load, env)

这个问题可以用PPO.load((而不是model.load((来解决。不知道为什么。

这是加载型号的正确代码

del model
ppo_path_load = os.path.join('Training', 'Saved Models', 'PPO_2m_Driving_model')
model = PPO.load(ppo_path_load)

如果您查看load方法的文档字符串,您将看到:

从zip文件加载模型。警告:load从头开始重新创建模型,它不会更新到位!对于就地加载,请改用set_parameters

因此,您的问题的解决方案可能是:

model = model.load(ppo_path_load, env)

这种行为也使我感到困惑。也许我们可以向开发人员汇报。

相关内容

  • 没有找到相关文章

最新更新