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

TensorFlow生成tfrecords时出现UnicodeDecodeError错误该如何解决?

错误原因

该报错为Windows系统下的路径编码冲突导致:你的图片文件路径、文件名或CSV文件中包含中文/非UTF-8编码的特殊字符,tf.io.gfile.GFile接口在Windows下默认使用UTF-8解码路径,碰到GBK编码的字符就会抛出解码失败错误。

可行解决方法

  • 方案1(最简便,优先尝试):替换TensorFlow文件读取接口为Python原生接口
    将create_tf_example函数中读取图片的代码:

    with tf.io.gfile.GFile(os.path.join(path, '{}'.format(group.filename)), 'rb') as fid:
    

    修改为:

    with open(os.path.join(path, group.filename), 'rb') as fid:
    

    原生open函数对Windows下的中文路径兼容性更好,无需修改其他逻辑即可正常读取二进制图片文件。

  • 方案2(需保留tf.io.gfile.GFile时使用):转码路径字符串
    在构造图片路径后先做编码兼容处理,修改读取部分代码为:

    img_path = os.path.join(path, group.filename).encode('utf-8').decode('latin-1')
    with tf.io.gfile.GFile(img_path, 'rb') as fid:
    
  • 补充检查:确认CSV文件编码
    如果你运行时在pd.read_csv步骤也出现同类编码错误,可修改读取CSV的代码,指定对应编码:

    # CSV为Excel默认保存的GBK编码时用这个
    examples = pd.read_csv(FLAGS.csv_input, encoding='gbk')
    # CSV为UTF-8带BOM编码时用这个
    examples = pd.read_csv(FLAGS.csv_input, encoding='utf-8-sig')
    
  • 根源规避方案
    全链路避免出现非ASCII字符:所有文件路径、图片文件名、标注类别名统一使用英文+数字组合,不要包含中文、特殊符号、空格,从根本上避免编码冲突问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 11:54:03