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

QR码数据集导入报错:无法将(410,410)数组广播至(28,28)

解决ValueError: could not broadcast input array from shape (410,410) into shape (28,28)问题

错误原因

你的代码是为MNIST的28x28灰度图设计的,但QR码图像尺寸为410x410,初始化的train、test数组尺寸与读取的图像尺寸不匹配,导致赋值时广播失败。

修复方案

方案1:适配QR码的原始尺寸

直接修改数组初始化和后续处理逻辑,适配410x410的图像:

  • 修改read_MNIST_Data函数中数组初始化代码:
    train = np.empty((1000,410,410),dtype='float')
    test = np.empty((10000,410,410),dtype='float')
    
  • 修改reshape逻辑:
    trainX = train.reshape(train.shape[0],1,410,410)
    testX = test.reshape(test.shape[0],1,410,410)
    
  • 修改plot_images函数中的绘图尺寸:
    plt.imshow(img.reshape(410,410), cmap="gray")
    

方案2:将QR码缩放到28x28尺寸

如果希望继续使用原有的28x28模型输入尺寸,读取图像后用OpenCV缩放:

  • 修改训练集读取代码(测试集同理):
    # 替换标记***的行
    img = cv2.imread('C:/Users/trifo/Downloads/Train-20221025T200820Z-001/Train_Project/{0}'.format(filename),0)
    resized_img = cv2.resize(img, (28,28)) / 255.0
    train[i] = resized_img
    
    缩放时可根据需求选择插值方法,比如cv2.resize(img, (28,28), interpolation=cv2.INTER_AREA)

额外需要修复的代码问题

  • 缩进错误:标记***的代码行缩进不正确,应和循环内的trainY[i] = y保持同一缩进级别,否则只会处理最后一个文件
  • 测试集加载错误:get_train_test_loaders中testds错误使用了训练集的张量,应改为:
    testds = MyDataSet(x_test_tensor, y_test_tensor)
    
  • 数据集数量匹配:确保训练文件夹内的文件数量正好是1000,测试文件夹内是10000,否则会出现索引越界错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 07:01:16