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

TF-Agents自定义微电网环境utils.validate_py_environment校验失败问题

问题原因

校验失败的核心原因是返回的TimeStep字段维度和你定义的spec不匹配,具体有两处错误:

  • reset返回的观测值维度错误:你在_reset方法中用np.array([self._state])生成观测,多套了一层数组,得到的是shape为(1,4)的二维数组,但你的observation_spec定义的观测shape是(4,)的一维数组,二者不匹配。
  • 终止状态返回的奖励维度错误:episode终止时你生成的reward是np.array([self._state[0] - self._state[3]],带了多余的数组包裹,得到的是shape为(1,)的一维数组,和spec要求的标量(shape为())不匹配,同时会连带导致discount因子也变成错误的一维数组格式。

修复方案

修改MicroGridEnv类的两个方法即可:

def _reset(self):
    self._state = [0.0, 0.0, 0.0, 0.0]
    self._episode_ended = False
    # 去掉外层多余的[],生成shape为(4,)的一维数组
    return ts.restart(np.array(self._state, dtype=np.float32))

def _step(self, action):
    # 其余代码保持不变,仅修改终止时的reward生成逻辑
    if self._episode_ended:
        # 去掉外层多余的[],生成标量格式的reward
        reward = np.array(self._state[0] - self._state[3], dtype=np.float32)
        return ts.termination(
            self._state,
            reward
        )
    else:
        return ts.transition(
            self._state,
            reward=0
        )

修改完成后重新运行,utils.validate_py_environment即可正常通过校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:15:02