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

强化学习训练时np.split提示数组无法均等拆分该如何解决?

问题解决思路

报错根本原因

np.split执行均等分割的前提是待分割数组的长度必须是拆分份数的整数倍,你设定的num_episodes=10000,需要拆分为10份、每份1000个元素,但实际收集的rewards_all_episodes数组长度远不等于10000,因此触发报错。

代码中的错误点

  • 语法错误:奖励累加逻辑写错,rewards_current_episode +- reward 应为 rewards_current_episode += reward,否则每局奖励不会正常累加
  • 缩进错误:两个核心逻辑的缩进位置错误,现在被嵌套在单局内的步循环中:
    1. 探索率更新代码
    2. rewards_all_episodes.append(rewards_current_episode) 语句
      上述代码应该移到单局步循环结束后、和外层episode循环平级的位置,保证每局结束才记录一次整局奖励,同时每局更新一次探索率。
  • 优化建议:拆分处的num_episodes/1000改为num_episodes//1000整数除法,保证传入的拆分份数为整数,避免潜在的浮点数参数问题。

修正后的核心代码片段

rewards_all_episodes = []

# Q-learning algorithm
for episode in range(num_episodes):
    state = env.reset()

    # Exploration/exploitation trade-off
    done = False
    rewards_current_episode = 0

    for step in range(max_steps_per_episode):
        exploration_rate_threshold = random.uniform(0,1)
        if exploration_rate_threshold > exploration_rate:
            action = np.argmax(q_table[state,:])
        else:
            action = env.action_space.sample()

        new_state, reward, done, info = env.step(action)

        #Update Q-table for Q(s,a)
        q_table[state, action] = \
            q_table[state, action] * (1 - learning_rate) + learning_rate * (reward + discount_rate *
                                                                            np.max(q_table[new_state, :]))

        state = new_state
        # 修正奖励累加语法
        rewards_current_episode += reward

        if done == True:
            break
    # 以下逻辑移到步循环外,每局结束后执行
    # Exploration rate decay
    exploration_rate = min_exploration_rate + (max_exploration_rate - min_exploration_rate) * np.exp(
        -exploration_decay_rate * episode)
    # 每局记录一次总奖励
    rewards_all_episodes.append(rewards_current_episode)

# 此时rewards_all_episodes长度正好为10000,可均等拆分为10份
rewards_per_thousand_episodes = np.split(np.array(rewards_all_episodes), num_episodes//1000)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:27:03