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

Gym环境下评估RL模型时提取观测值的代码行报错求助

Gym环境下评估RL模型时提取观测值的代码行报错求助

各位大佬好,最近在做强化学习模型的评估,用的是Gym环境,跑了个循环收集观测数据和累计奖励,但其中有一行提取观测值的代码一直报错,折腾半天没搞定,来求助下!

先贴我的代码片段:

total_reward = 0
obs_test = env_test.reset()
all_mirs = []

for step in range(1728):  # 按5分钟一个间隔,跑满24小时的步数
    action, _ = model.predict(obs_test)
    obs_test, reward, done, info = env_test.step(action)

    all_mirs += list(obs_test[0][20:30])  # <-- 就是这行触发了报错
    total_reward += reward

我的需求其实很简单:想把每一步环境返回的观测值里,索引20到30的那部分数据提取出来,追加到all_mirs列表里。但运行时要么报索引越界,要么提示我没法对obs_test做二维切片,感觉是我对obs_test的结构理解错了。

我自己试着排查了下:

  • 打印过obs_test的类型和形状,发现有时候它不是我预期的二维数组,偶尔会是一维的?
  • 试过先把obs_test转成numpy数组再切片,但还是会有维度不匹配的问题

想请教大家几个问题:

  • 会不会是env.step()返回的观测值维度在不同步骤里会发生变化?
  • 有没有什么稳妥的方式先确认obs_test的结构,再安全提取目标数据?
  • 有没有替代的写法,能避免这种因结构不明确导致的切片报错?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 13:24:30