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

在Google Colab训练CartPole-v0模型时遇‘解包变量过多’错误求助

解决CartPole-v0训练中"too many variables to unpack"错误

错误根源

你的代码里直接引发报错的问题是:调用env.close()关闭环境后,又执行了env.step(1)操作已失效的环境实例,导致后续重新创建的环境被DummyVecEnv包装后状态异常,最终在model.learn()运行时,环境返回的step结果格式不符合预期,触发解包错误。

另外补充:如果你的Gym版本是1.x,原生CartPole-v0的step()方法会返回5个值(state, reward, terminated, truncated, info),你测试循环里用4个变量解包的写法也存在版本兼容隐患。

修正方案

  1. 删除非法操作:把env.close()之后的env.step(1)语句彻底删掉,绝对不要操作已关闭的环境。
  2. 适配Gym版本:如果使用Gym 1.x,调整测试循环里的step解包逻辑,适配5返回值格式:
    • 将循环内的done变量替换为terminated和truncated
    • 调整step解包语句,同时更新循环终止条件

修正后的完整代码

!pip install stable-baselines3[extra]
!apt-get install x11-utils > /dev/null 2>&1
!pip install pyglet > /dev/null 2>&1
!apt-get install -y xvfb python-opengl > /dev/null 2>&1
!pip install gym pyvirtualdisplay > /dev/null 2>&1

import tensorflow as tf
import os
import gym
import numpy as np
import matplotlib.pyplot as plt
from IPython import display as ipythondisplay
from stable_baselines3 import PPO
from stable_baselines3.common.vec_env import DummyVecEnv
from stable_baselines3.common.evaluation import evaluate_policy

from pyvirtualdisplay import Display
display = Display(visible=0, size=(400, 300))
display.start()

environment_name = 'CartPole-v0'
env = gym.make(environment_name)

episodes = 5
for episode in range(1, episodes+1):
    state = env.reset()
    terminated = False
    truncated = False
    score = 0

    while not terminated and not truncated:
        prev_screen = env.render(mode='rgb_array')
        plt.imshow(prev_screen)
        action = env.action_space.sample()
        # 适配Gym 1.x的step返回格式
        n_state, reward, terminated, truncated, info = env.step(action)
        score += reward
    print('Episode:{} Score:{}'.format(episode, score))
env.close()

log_path = os.path.join('Training','Logs')

# 创建全新的环境实例并包装
env = gym.make(environment_name)
env = DummyVecEnv([lambda: env])
model = PPO('MlpPolicy', env, verbose=1, tensorboard_log=log_path)

model.learn(total_timesteps=20000)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 20:13:28