调用GPT2生成文本时触发ValueError数组真值歧义问题如何解决
问题原因
- 你通过
from_pretrained加载的GPT2LMHeadModel默认是PyTorch框架的模型,仅支持处理PyTorch格式(pt)的输入张量 - 你在
generate_text函数内调用tokenizer.encode时,错误指定了return_tensors='tf',生成的是TensorFlow格式的张量,两种框架的张量格式不兼容,模型内部做布尔判断时无法识别跨框架的数组结构,就触发了这个真值判断歧义的报错。
修复方案
只需要修改generate_text函数内的编码参数,将return_tensors='tf'替换为return_tensors='pt'即可正常运行。修改后的对应代码如下:
def generate_text(inp): input_ids = tokenizer.encode(inp, return_tensors='pt') beam_output = model.generate(input_ids, max_length=100, num_beams=5, no_repeat_ngram_size=2, early_stopping=True) output = tokenizer.decode(beam_output[0], skip_special_tokens=True, clean_up_tokenization_spaces=True) return ".".join(output.split(".")[:-1]) + "."
如果你确实需要使用TensorFlow框架的模型做推理,可以将模型导入语句替换为from transformers import TFGPT2LMHeadModel,加载TFGPT2LMHeadModel的预训练权重即可保留return_tensors='tf'的配置。
内容的提问来源于stack exchange,提问作者user13800925
相关产品推荐
相关产品推荐

