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

使用transformers加载BertModel时遭遇UnicodeDecodeError问题求助

问题分析与解决建议

首先,你的核心问题出在模型加载类的选择错误,导致代码试图把二进制权重文件当成JSON配置文件来读取,进而触发了UnicodeDecodeError。

为什么会报错?

你用TFBertModel.from_pretrained(model_file)加载模型,但TFBertModel是TensorFlow版本的BERT实现,而你转换得到的pytorch_model.bin是PyTorch格式的二进制权重文件。当from_pretrained方法接收到这个文件路径时,它会默认尝试读取成JSON配置文件,二进制文件的字节自然无法用UTF-8解码,就出现了'utf-8' codec can't decode byte 0x80的错误。

解决方案

方案1:使用PyTorch版本的模型类加载(推荐,因为你已经转成了PyTorch权重)

修改代码,用BertModel(PyTorch版本)替代TFBertModel,并且直接传入模型文件夹路径即可,from_pretrained会自动加载文件夹内的config.json、pytorch_model.bin和词表:

from transformers import BertModel, BertTokenizer
import os

current_dir = os.path.dirname(__file__)
model_folder = os.path.join(current_dir, 'torch_bert_model')

# 加载Tokenizer
tokenizer = BertTokenizer.from_pretrained(model_folder)
# 加载PyTorch模型
model = BertModel.from_pretrained(model_folder)

方案2:如果确实需要TensorFlow版本的模型

如果你想使用TensorFlow的TFBertModel,有两种方式:

  1. 直接从谷歌下载TensorFlow版本的预训练模型,不需要转成PyTorch格式;
  2. 把已有的PyTorch权重转换成TensorFlow格式,使用transformers提供的转换工具:
    from transformers import BertModel, TFBertModel
    
    # 先加载PyTorch模型
    pt_model = BertModel.from_pretrained("./torch_bert_model")
    # 转换为TensorFlow模型并保存
    tf_model = TFBertModel.from_pretrained("./torch_bert_model", from_pt=True)
    tf_model.save_pretrained("./tf_bert_model")
    
    之后就可以用TFBertModel.from_pretrained("./tf_bert_model")加载了。

额外检查项

确认你的torch_bert_model文件夹结构完全正确:

  • 包含config.json(原bert_config.json重命名后的文件)
  • 包含pytorch_model.bin(转换后的PyTorch权重)
  • 包含vocab.txt(原模型的词表文件)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 11:17:51