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

Python机器学习Keras预测报空数据集错误问题求解

问题排查与解决方案

这个ValueError: Expect x to be a non-empty array or dataset.错误的核心是传入预测函数的test_feature_normalize是空数组,没有有效输入数据,按以下顺序排查即可:

  • 首先排查图像路径读取失败问题
    你写的路径glob.glob("imagedata\*.jpg" )存在转义字符问题:Windows系统下的反斜杠\是Python的转义符,会导致路径解析错误。修改方案三选一:

    1. 改为正斜杠:glob.glob("imagedata/*.jpg")
    2. 改为双反斜杠:glob.glob("imagedata\\*.jpg")
    3. 加原始字符串前缀:glob.glob(r"imagedata\*.jpg")
      修改后可以加一行print(len(files))验证,如果输出为0,说明imagedata文件夹和你当前运行的脚本不在同一个目录,或者文件夹内没有后缀为.jpg的图像,先修正路径保证能读到文件。
  • 然后排查reshape维度不匹配问题
    你代码里先把图像resize成了(80,80)的尺寸,每张图的维度是80×80×3,后续reshape的时候却写了reshape(len(test_feature), 40,40,3),二者总元素数不匹配。如果前面成功读到图像,这步会直接抛出维度错误;如果没读到图像,reshape空数组不会报错,会直接生成空的特征数组。
    修复方案:把reshape代码改为和resize尺寸一致:

    test_feature_vector = test_feature.reshape(len(test_feature), 80,80,3).astype('float32')
    
  • 可选优化:修正标签提取逻辑
    你当前用label=file[10:13]硬编码切片取标签,对文件路径、文件名长度要求极高,很容易提取失败。建议改为通过关键词判断标签:

    for file in files:
        img=cv2.imread(file) 
        img = cv2.resize(img, dsize=size)       
        test_feature.append(img)
        # 替换硬编码切片逻辑
        if 'cat' in file.lower():
            test_label.append(0)
        elif 'dog' in file.lower():
            test_label.append(1)
    

你可以在归一化代码后加一行print(test_feature_normalize.shape)验证,只要输出的第一个维度大于0,就说明有有效数据,预测就不会再报空数据集错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:36:05