Hugging Face Transformers中pad_token_id配置报错问题求解
报错原因与解决方案
报错根因
pad_token_id 并非 TFGPT2LMHeadModel.from_pretrained() 方法的合法入参,该参数属于文本生成调用阶段的配置项,将其放在模型初始化步骤传入,就会触发关键字参数不识别的TypeError。
正确实现步骤
- 正常初始化分词器与模型,无需在模型初始化阶段传入
pad_token_id
import tensorflow as tf from transformers import TFGPT2LMHeadModel, GPT2Tokenizer tokenizer = GPT2Tokenizer.from_pretrained("gpt2") model = TFGPT2LMHeadModel.from_pretrained("gpt2")
- 为分词器显式设置pad token,避免批量处理时触发padding相关报错
# GPT2默认未配置pad token,直接复用eos token作为pad token即可 tokenizer.pad_token = tokenizer.eos_token
- 执行生成任务调用
generate()方法时,再传入pad_token_id参数
# 输入文本编码示例 inputs = tokenizer("开放式生成的起始文本", return_tensors="tf") # 生成阶段传入pad_token_id配置 outputs = model.generate( **inputs, max_length=100, pad_token_id=tokenizer.pad_token_id, do_sample=True, top_p=0.9 ) # 解码输出生成结果 print(tokenizer.decode(outputs[0], skip_special_tokens=True))
额外排查方案
如果按上述步骤操作仍存在报错,可先升级transformers库到最新稳定版:pip install --upgrade transformers
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

