You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用CleanRL运行Pendulum-v1遇SB3 NotImplementedError问题求助

问题分析与解决

出现这个错误的核心原因是SB3的get_obs_shape函数无法识别当前的观测空间类型,即便你打印的观测空间看起来是标准的Box类型,常见触发场景及解决方式如下:

1. gym与gymnasium的类型不匹配

现在很多RL项目开始迁移到gymnasium(替代旧版gym的库),如果你的SB3版本低于2.0,它只会识别gym.spaces.Box类型;而gymnasium返回的观测空间是gymnasium.spaces.Box——这两个是完全独立的类,会导致isinstance判断失败,从而走到get_obs_shape的else分支抛出错误。

解决方法:

  • 升级SB3到2.0及以上版本:新版SB3原生支持gymnasium,能正确识别gymnasium.spaces.Box类型。
  • 切换回旧版gym:如果不想升级SB3,可以卸载gymnasium,安装旧版gym(如gym==0.26.2),确保环境返回的是gym.spaces.Box类型。

2. SB3版本过旧导致的观测空间支持缺失

极少数情况下,非常旧的SB3版本可能对高维Box空间的处理存在疏漏,但这种概率极低——毕竟Pendulum-v1是经典环境,SB3很早就支持它的3维观测空间。

解决方法:

直接升级SB3到最新稳定版本即可。

额外排查点

  • 检查CleanRL代码中是否对观测空间做了额外包装:比如是否在环境初始化后修改了观测空间的类型,导致传入ReplayBuffer的不是原始的Box空间。
  • 确认ReplayBuffer初始化时传入的observation_space参数确实是环境的env.observation_space,而非其他自定义空间。

内容的提问来源于stack exchange,提问作者desert_ranger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 16:33:38