Python 稳定的基线保存PPO模型并再次对其进行培训

Python 稳定的基线保存PPO模型并再次对其进行培训,python,tensorflow,reinforcement-learning,stable-baselines,Python,Tensorflow,Reinforcement Learning,Stable Baselines,您好,我使用稳定的基线包,特别是我使用的PPO2,我不知道如何正确地保存我的模型。。。我对它进行了6天的虚拟训练,使我的平均回报率达到300左右,然后我决定这对我来说是不够的,所以我又对模型进行了6天的训练。但当我查看训练统计数据时,每集的第二次训练回归开始于30左右。这表明它没有保存所有参数 以下是我保存和使用软件包的方式: def make_env_init(env_id, rank, seed=0): """ Utility function for multiproces

您好,我使用稳定的基线包,特别是我使用的PPO2,我不知道如何正确地保存我的模型。。。我对它进行了6天的虚拟训练,使我的平均回报率达到300左右,然后我决定这对我来说是不够的,所以我又对模型进行了6天的训练。但当我查看训练统计数据时,每集的第二次训练回归开始于30左右。这表明它没有保存所有参数

以下是我保存和使用软件包的方式:

def make_env_init(env_id, rank, seed=0):
    """
    Utility function for multiprocessed env.

    :param env_id: (str) the environment ID
    :param seed: (int) the inital seed for RNG
    :param rank: (int) index of the subprocess
    """

    def env_init():
        # Important: use a different seed for each environment
        env = gym.make(env_id, connection=blt.DIRECT)
        env.seed(seed + rank)
        return env

    set_global_seeds(seed)
    return env_init



envs = VecNormalize(SubprocVecEnv([make_env_init(f'envs:{env_name}', i) for i in range(processes)]), norm_reward=False)

if os.path.exists(folder / 'model_dump.zip'):
    model = PPO2.load(folder / 'model_dump.zip', envs, **ppo_kwards)
else:
    model = PPO2(MlpPolicy, envs, **ppo_kwards)

model.learn(total_timesteps=total_timesteps, callback=callback)
model.save(folder / 'model_dump.zip')


您保存模型的方式是正确的。培训不是一个单调的过程:在进一步培训后,它也可能显示出更糟糕的结果

你能做的,首先是写进度日志:

模型=PPO2MlpPolicy、envs、tensorboard_log=。/日志/进度_tensorboard/ 要查看日志,请在终端中运行:

tensorboard-端口6004-日志目录/日志/进度\u tensorboard/ 它将为您提供指向该板的链接,然后您可以在浏览器中打开该链接,例如

其次,您可以每X步对模型进行快照:

从稳定的\u baselines.common.callbacks导入检查点回调 检查点回调=检查点回调保存频率=1e4,保存路径='。/模型检查点/' model.learntotal\u timesteps=total\u timesteps,callback=[callback,checkpoint\u callback]
结合日志,您可以选择性能最佳的模型

调用PPO2.load时是否需要提供参数envs、**ppo_kwards?我希望将配置与模型一起保存。