使用Keras和TF2加载已保存的自定义BERT模型后如何获取对应tokenizer
BERT意图分类任务缺失训练用tokenizer的解决方案
方案1:直接加载对应预训练版本的原生tokenizer
你微调BERT时使用的tokenizer和你选择的预训练BERT版本完全绑定,微调过程不会修改词表,只要找到训练时用的预训练版本即可直接获取匹配的tokenizer:
- 若使用Hugging Face Transformers库加载BERT,执行对应版本的tokenizer加载代码即可:
from transformers import BertTokenizer # 替换为你训练时使用的预训练BERT版本ID,例如bert-base-uncased、bert-base-chinese等 tokenizer = BertTokenizer.from_pretrained("替换为训练用预训练模型ID")
- 若使用TensorFlow Hub加载BERT,直接加载和训练时地址一致的预处理层即可:
import tensorflow_hub as hub # 替换为训练时使用的BERT预处理层TF Hub地址 preprocessor = hub.KerasLayer("替换为训练用预处理层地址")
方案2:训练阶段同步保存tokenizer(后续复用优化建议)
如果需要多次跨环境迁移模型,建议训练阶段就把tokenizer和SavedModel一起打包存储,避免后续遗忘预训练版本的问题:
# 训练阶段执行保存 tokenizer.save_pretrained("./intent_bert_tokenizer") # 新环境加载本地存储的tokenizer tokenizer = BertTokenizer.from_pretrained("./intent_bert_tokenizer")
验证规则
加载tokenizer后,取训练集中的任意一条文本做分词处理,对比训练阶段输出的input_ids、attention_mask结果,完全一致即可确认tokenizer匹配。
注意:禁止使用与训练时版本不同的BERT tokenizer,不同版本的词表存在差异,会直接导致预测结果出错。
内容的提问来源于stack exchange,提问作者Rohit
相关产品推荐
相关产品推荐

