运行model_main_tf2.py训练目标检测模型出现utf-8解码错误如何解决
问题解决步骤
- 校验配置文件拼写与编码
首先检查你执行命令中填写的配置文件名拼写是否正确,官方默认配置文件名为pipeline.config,你命令中写的pipline.config存在拼写错误,文件不存在时TensorFlow返回的Windows系统错误提示可能包含非UTF-8字符,直接触发该解码报错。拼写修正后,用记事本打开config文件,点击「另存为」,底部编码选择UTF-8,替换原文件,消除Windows默认ANSI编码带来的解码冲突。 - 强制Python使用UTF-8默认编码
Windows系统下Python默认使用GBK作为文件读取编码,就算文件内容全为英文也可能出现编码不兼容问题。执行训练命令前,先在当前Anaconda终端输入命令set PYTHONUTF8=1,再运行原训练命令即可,该参数会强制Python 3.7+版本所有文件操作默认使用UTF-8编码。 - 消除前置警告避免干扰
你收到的TensorFlow版本不支持、cudnn缺失警告也可能间接引发编码报错:TF2.6版本要求匹配CUDA11.2、cuDNN8.1,你可以把对应版本的cudnn64_8.dll放到CUDA安装路径的bin目录下消除GPU警告;如果不需要使用GPU训练,执行命令前先输入set CUDA_VISIBLE_DEVICES=-1强制使用CPU训练即可。 - 定位触发报错的具体文件
如果上述操作都无法解决问题,可以修改model_main_tf2.py的入口代码,增加异常捕获逻辑打印触发错误的文件路径:
重新运行脚本后就可以看到具体是哪个文件触发的解码错误,针对性调整对应文件的编码即可。import traceback try: # 此处保留文件原有执行逻辑 except UnicodeDecodeError as e: print(traceback.format_exc()) print("解码失败的文件/内容:", e.object)
内容的提问来源于stack exchange,提问作者PedroJung
相关产品推荐
相关产品推荐

