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

训练ssd_mobilenet_v2时遇InvalidArgumentError,求错误原因解析

SSD MobileNet v2训练错误:Input is empty 分析与解决

错误核心定位

报错信息里的InvalidArgumentError: Input is empty和decode_image/DecodeImage节点,明确指向数据读取与解码环节出现空输入,也就是训练脚本无法正常获取到有效的图片数据。

排查与修复方向

  • 检查数据集路径配置
    确认训练脚本中设置的数据集根目录、标注文件路径是否正确。Windows系统注意路径分隔符用\\或者原始字符串格式(如r"C:\train_data"),避免转义字符导致路径识别错误。
  • 校验数据集完整性
    逐一核对标注文件中记录的图片路径,确保所有图片文件都存在,且没有损坏(比如0字节空文件、无法打开的JPG/PNG)。可以用以下脚本批量检查:
    import os
    from PIL import Image
    
    def validate_images(img_root):
        for root, _, files in os.walk(img_root):
            for file in files:
                if file.lower().endswith(('.jpg', '.jpeg', '.png')):
                    img_path = os.path.join(root, file)
                    try:
                        with Image.open(img_path) as img:
                            img.verify()
                    except Exception as e:
                        print(f"无效图片: {img_path}")
    
    validate_images("你的数据集图片根目录")
    
  • 检查TFRecord文件(若使用)
    如果是通过TFRecord格式加载数据,确认生成TFRecord的脚本是否正确写入了图片数据,有没有出现空样本的情况。可以重新生成TFRecord文件,或者用TensorFlow的tf.data.TFRecordDataset读取后打印样本数量,验证数据有效性。
  • 调整数据读取器参数
    确认batch_size设置是否合理,当数据集剩余样本数小于batch_size时,若开启了drop_remainder=True但总样本数为0,会触发该错误。先确认数据集内确实有可用于训练的样本。另外,可尝试减少num_parallel_calls数值,避免多线程读取时出现IO异常。
  • 排除临时运行异常
    偶尔可能是GPU内存占用异常或数据加载线程未正常初始化导致的临时错误,尝试重启训练脚本,或者关闭其他占用GPU资源的程序后重新运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 13:32:34