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

TensorFlow生成tfrecord时报错UnicodeDecodeError: 'utf-8'解码失败怎么解决

解决方案

错误根因

你遇到的UnicodeDecodeError错误不是CSV文件编码问题,核心是TensorFlow的文件IO接口在Windows系统下解析含非ASCII字符的路径时失败:报错信息里的0xe9是法语字符é的编码值,你的项目路径、图片文件名中大概率存在带重音的字符、中文字符等非ASCII内容,导致路径解析失败。

修复步骤

按优先级尝试以下方案即可解决:

  1. 替换文件读取接口(90%场景可直接解决)
    找到generate_tfrecord.py中create_tf_example函数内的读取图片代码:
with tf.io.gfile.GFile(os.path.join(path, '{}'.format(group.filename)), 'rb') as fid:

替换为Python原生open接口,原生接口对Windows下的特殊字符路径适配更好:

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

修改完成后重新执行生成命令即可。

  1. 清理所有路径的非ASCII字符
    如果方案1无效,逐一检查以下路径,确保所有内容仅包含英文、数字和下划线:
  • 项目根目录的完整路径,不要存放在含中文、特殊字符的文件夹下
  • 训练图片的文件名,排查是否有带重音的法语字符(如é、è等),修改为纯英文命名,同时同步修改CSV文件内的filename列对应内容
  • 补充执行命令的参数:你当前的执行命令没有指定--image_dir参数,如果图片没有存放在项目根目录的images文件夹,需要明确指定路径,示例:
python generate_tfrecord.py --csv_input=data/train_labels.csv  --output_path=data/train.record --image_dir=data/images
  1. 全局指定Python编码(备选方案)
    如果以上方案都无效,在generate_tfrecord.py所有import代码之前添加以下内容,强制指定Python运行时编码为UTF-8:
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:54:02