Dopamine 连续控制域实验入口:create_continuous_runner 完整解析与实战指南

发布时间:2026/9/23 12:30:42
Dopamine 连续控制域实验入口:create_continuous_runner 完整解析与实战指南 机器学习深度学习【免费下载链接】dopamineDopamine is a research framework for fast prototyping of reinforcement learning algorithms.项目地址https://gitcode.com/gh_mirrors/do/dopamine点击查看免费下载导读dopamine.continuous_domains.run_experiment.create_continuous_runner是 Dopamine 在**连续控制域continuous domains**下的实验 Runner 工厂函数负责根据用户指定的调度类型实例化对应的实验运行器。本文围绕该函数展开先梳理其函数签名与参数语义再深入源码剖析其schedule分发机制、底层ContinuousRunner与ContinuousTrainRunner的构造细节最后结合train.py入口与单元测试给出可复制、可运行的实战配置方案。读完本文你将掌握如何在 MuJoCo 等连续控制环境中一键启动 SAC/PPO 训练实验并理解如何通过 Gin 配置覆盖 Runner 的默认行为。函数签名与核心语义create_continuous_runner定义于仓库源码 dopamine/continuous_domains/run_experiment.py是一个被gin.configurable装饰的工厂函数dopamine.continuous_domains.run_experiment.create_continuous_runner( base_dir, schedulecontinuous_train_and_eval )参数说明参数类型说明base_dirstr承载所有子目录的基础目录checkpoint、日志、TensorBoard 摘要等都会写到这里面schedulestring指定使用哪种类型的 Runner默认值为continuous_train_and_eval返回值返回一个Runner类型的对象ContinuousRunner或ContinuousTrainRunner两者都继承自dopamine.discrete_domains.run_experiment.Runner专门用于JAX/Flax智能体。异常当传入未知的schedule字符串时抛出ValueError。源码中的实现是else: raise ValueError(Unknown schedule: {}.format(schedule))schedule 分发机制两种运行模式的选择create_continuous_runner的主体是一段简单的if/elif/else分发逻辑源码见 run_experiment.py#L125-L133assert base_dir is not None # 持续执行训练与评估直到达到最大迭代次数 if schedule continuous_train_and_eval: return ContinuousRunner(base_dir, create_continuous_agent) # 持续执行训练直到达到最大迭代次数 elif schedule continuous_train: return ContinuousTrainRunner(base_dir, create_continuous_agent) else: raise ValueError(Unknown schedule: {}.format(schedule))两种 schedule 的定位差异清晰continuous_train_and_eval默认返回ContinuousRunner每个迭代iteration内依次执行训练阶段与评估阶段产出完整的训练/评估统计量continuous_train返回ContinuousTrainRunner仅执行训练阶段不进行周期评估适合纯训练或需要自行控制评估时机的场景。注意函数开头还有assert base_dir is not None的守卫断言调用方必须提供有效的基础目录。测试用例的印证仓库测试 tests/dopamine/continuous_domains/run_experiment_test.py 对上述分发逻辑做了参数化验证schedulecontinuous_train_and_eval期望返回run_experiment.ContinuousRunnerschedulecontinuous_train期望返回run_experiment.ContinuousTrainRunner传入非法 schedule如invalid_name时断言抛出ValueError。同时测试通过gin.bind_parameter(create_continuous_agent.agent_name, sac)绑定智能体名称说明该工厂函数与 Gin 配置系统深度集成——这正是gin.configurable装饰器的实际作用。底层 Runner 构造细节默认参数与初始化流程ContinuousRunner的构造函数run_experiment.py#L144-L213继承自离散域的Runner但只面向 JAX/Flax 智能体其默认参数构成了连续控制实验的基准配置参数默认值说明create_environment_fngym_lib.create_gym_environment创建 Gym 环境的工厂函数checkpoint_file_prefixckptcheckpoint 文件前缀logging_file_prefixlog日志文件前缀log_every_n1写日志的频率num_iterations200迭代次数阈值须大于start_iterationtraining_steps250000每个迭代的训练步数evaluation_steps125000每个迭代的评估步数max_steps_per_episode1000单 episode 的最大步数超过即终止clip_rewardsFalse是否将奖励裁剪到[-1, 1]use_legacy_loggerTrue是否使用旧版 Logger即将被CollectorDispatcher取代构造函数内部依次执行_create_directories()创建基础目录结构初始化 TensorBoardSummaryWriter(base_dir)调用create_environment_fn()创建环境默认走 gym_lib.create_gym_environment支持environment_name、version、use_legacy_gym、use_ppo_preprocessing等 Gin 参数调用create_continuous_agent(environment, summary_writer...)创建智能体_initialize_checkpointer_and_maybe_resume(checkpoint_file_prefix)从最新 checkpoint 恢复若存在实现断点续训创建collector_dispatcher.CollectorDispatcher并挂载到智能体若智能体实现了set_collector_dispatcher方法。ContinuousTrainRunner则在父类基础上覆盖了_run_one_iteration只跑训练阶段并把Train/NumEpisodes、Train/AverageReturns、Train/AverageStepsPerSecond写入 TensorBoard 与 CollectorDispatcherrun_experiment.py#L291-L328。构造函数中还会强制self._agent.eval_mode False。环境工厂的可替换性默认的create_gym_environment从 Gym/Gymnasium 创建连续控制环境仓库内置MUJOCO_GAMES (Ant, HalfCheetah, Hopper, Humanoid, Walker2d)见 gym_lib.py#L55并剥离 Gym 的TimeLimit避免 200 步上限再包上GymPreprocessing适配 Dopamine 的 API。你可以通过 Gin 绑定ContinuousRunner.create_environment_fn替换成任意自定义环境工厂测试中正是这样注入 mock 环境的。智能体工厂create_continuous_agent 的配套支持create_continuous_runner在实例化 Runner 时固定传入create_continuous_agent作为智能体工厂run_experiment.py#L42-L108。该工厂同样由gin.configurable装饰根据agent_name分发agent_name返回的智能体关键前提sacsac_agent.SACAgent动作空间与观测空间须为spaces.Box需传入action_limitslow/highppoppo_agent.PPOAgent动作空间与观测空间须为spaces.Boxsac_cale*sac_cale.SACCALEAgentCALE 变体agent_name.startswith(sac_cale)即命中ppo_cale*ppo_cale.PPOCALEAgentCALE 变体agent_name.startswith(ppo_cale)即命中其他抛出ValueError(Unknown agent: ...)—实现细节上SAC 分支会断言isinstance(environment.action_space, spaces.box.Box)并传入action_limits、action_dtype、observation_dtype等连续控制所需的参数未知名称抛出ValueError与测试testCreateContinuousAgentWithInvalidNameRaisesException一一对应run_experiment_test.py#L58-L60。实战通过 train.py 入口启动连续控制实验连续控制域的实验入口脚本为 dopamine/continuous_domains/train.py其主流程如下run_experiment.load_gin_configs(gin_files, gin_bindings) runner run_experiment.create_continuous_runner(base_dir) runner.run_experiment()命令行参数包括Flag类型说明--base_dirstr必填flags.mark_flag_as_required强制承载所有子目录的基础目录--gin_files可多传Gin 配置文件路径列表例如dopamine/jax/agents/sac/configs/sac.gin--gin_bindings可多传覆盖配置文件中取值的 Gin 绑定典型启动命令以 SAC MuJoCo 为例python -m dopamine.continuous_domains.train \ --base_dir/tmp/dopamine/sac \ --gin_filesdopamine/jax/agents/sac/configs/sac.gin \ --gin_bindingscreate_continuous_runner.schedulecontinuous_train_and_eval \ --gin_bindingscreate_continuous_agent.agent_namesac \ --gin_bindingscreate_gym_environment.environment_nameHalfCheetah \ --gin_bindingsContinuousRunner.num_iterations200 \ --gin_bindingsContinuousRunner.training_steps250000要点说明create_continuous_runner因带gin.configurable其参数包括schedule可以直接通过--gin_bindings覆盖create_continuous_agent.agent_name决定使用哪种算法SAC 对应sacPPO 对应ppoContinuousRunner.*系列绑定用于覆盖上文的默认超参迭代数、训练/评估步数等环境名称从MUJOCO_GAMES元组中选取配合 baselines/mujoco/data 下的结果数据可复现实验若仅训练不评估将schedule改为continuous_train即可。实验过程中TensorBoard 摘要、checkpointckpt前缀与日志log前缀都会写入base_dirContinuousRunner在初始化时会自动从最新 checkpoint 恢复天然支持中断续跑。相关 API 与延伸阅读create_continuous_runner属于 dopamine.continuous_domains.run_experiment 模块同模块还包含create_continuous_agent创建连续控制智能体的工厂函数ContinuousRunner训练 评估的 Runner 类ContinuousTrainRunner纯训练的 Runner 类。想进一步深入可阅读 dopamine/continuous_domains/run_experiment.py 的完整源码、离散域基类 dopamine/discrete_domains/run_experiment.py、环境封装 dopamine/discrete_domains/gym_lib.py以及对应单元测试 tests/dopamine/continuous_domains/run_experiment_test.py 来验证行为。赞分享机器学习深度学习【免费下载链接】dopamineDopamine is a research framework for fast prototyping of reinforcement learning algorithms.项目地址https://gitcode.com/gh_mirrors/do/dopamine点击查看免费下载相关推荐如何用 fuels-rs 的 WalletsConfig 3 步搞定多资产测试钱包配置如何用 fuels rs 的 WalletsConfig 3 步搞定多资产测试钱包配置 写合约测试时你大概率会遇到这样的场景一个用例需要 3 个钱包其中每机器学习深度学习curl 多接口连接池总量控制CURLMOPT_MAX_TOTAL_CONNECTIONS 完整实战指南curl 多接口连接池总量控制CURLMOPT_MAX_TOTAL_CONNECTIONS 完整实战指南 本指南围绕 libcurl 多接口multi inCLI网络通信深度解析Dopamine中的SAC算法连续控制任务的强化学习实践深度解析Dopamine中的SAC算法连续控制任务的强化学习实践 Dopamine是Google开发的一个快速原型强化学习算法研究框架专注于为研究人员提供高强化学习机器学习深度学习创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考