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

星际争霸2Bot训练数据保存报错:请求数组存在不均匀形状

星际争霸2Bot游戏结果保存报错解决方案

报错核心原因

这个错误是因为你尝试保存的数据结构存在维度不一致的问题:前两维是统一的(24,2)形状,但后续子序列的长度不统一,导致无法生成规整的结构化数组(比如numpy数组),和保存路径无关。

具体修复步骤

1. 先定位数据异常点

在保存代码前添加调试代码,找出哪组数据的结构和其他组不一致:

# 假设待保存数据为game_data
for i, group in enumerate(game_data):
    print(f"第{i}组数据: 子序列长度列表 = {[len(sub) for sub in group]}")

运行后查看输出,找到长度和其他组不同的子序列,这就是问题根源。

2. 统一数据维度(二选一)

根据Bot的需求选择适配的处理方式:

  • 补全/截断法:将所有子序列统一到相同长度,比如以最长子序列为标准,短的补默认值(如0),长的截断:
    # 先找出所有子序列的最大长度
    max_sub_len = max([len(sub) for group in game_data for sub in group])
    normalized_data = []
    for group in game_data:
        normalized_group = []
        for sub in group:
            # 补全到max_sub_len长度,不足补0
            padded_sub = sub + [0]*(max_sub_len - len(sub))
            normalized_group.append(padded_sub)
        normalized_data.append(normalized_group)
    
  • 改用异构存储格式:如果不需要规整数组,直接用支持嵌套异构数据的格式(比如JSON)保存:
    import json
    import os
    
    save_dir = r"C:\123\train_data"
    # 确保文件夹存在
    if not os.path.exists(save_dir):
        os.makedirs(save_dir)
    # 保存为JSON文件
    with open(os.path.join(save_dir, "game_result.json"), "w", encoding="utf-8") as f:
        json.dump(game_data, f, indent=2)
    

3. 路径合法性验证(补充)

虽然路径不是报错原因,但可以提前处理避免后续问题:

save_dir = r"C:\123\train_data"
# 自动创建不存在的文件夹
if not os.path.isdir(save_dir):
    os.makedirs(save_dir, exist_ok=True)

验证方法

修改后先运行1-2局测试,确认数据能正常保存后再批量运行Bot。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 20:33:15