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

拆分k_images为x_train和x_test报错Too many values to unpack如何解决

报错原因及修改方案

你当前使用的(x_train, _), (x_test, _) = k_images解构语法,仅适配Keras内置数据集(如MNIST、CIFAR)的加载返回结构,这类接口会直接返回预先拆分好的(训练集, 训练标签), (测试集, 测试标签)嵌套元组。但你的代码存在两个核心问题:

  • 循环内的k_images是单张jpg读取后生成的三维ndarray(维度为(高度, 宽度, 通道数)),完全不符合上述解构需要的结构,因此触发值数量不匹配的报错
  • 你还没有把10张图片汇总为完整的数据集数组,直接对单张图片做拆分没有实际意义

修改步骤

  • 先把所有读入的图片汇总为一个完整的数据集数组
  • 按比例切分训练集和测试集,可以用sklearn的拆分工具,也可以手动切片实现

修改后的代码示例:

import glob
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.image as mpimg
from sklearn.model_selection import train_test_split

# 汇总所有图片到列表
all_images = []
for img_path in glob.glob("F:/Pics/Training_data/*.jpg"):
    k_images = mpimg.imread(img_path)
    all_images.append(k_images)
    # 原有显示逻辑,不需要可以删除
    plt.imshow(k_images)
    plt.show()

# 转为numpy格式的总数据集
all_images = np.array(all_images)

# 按8:2拆分训练集和测试集,不需要标签就不用额外加占位变量
x_train, x_test = train_test_split(all_images, train_size=0.8, random_state=42)

# 不想引入sklearn也可以手动切片拆分,10张图的话前8张训练、后2张测试
# x_train = all_images[:8]
# x_test = all_images[8:]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:15:04