使用变压器管道和编码加函数的Bert

2024-05-23 23:02:49 发布

您现在位置:Python中文网/ 问答频道 /正文

当我使用:

modelname = 'deepset/bert-base-cased-squad2'
model = BertForQuestionAnswering.from_pretrained(modelname)
tokenizer = AutoTokenizer.from_pretrained(modelname)
nlp = pipeline('question-answering', model=model, tokenizer=tokenizer)

result = nlp({'question': question,'context': context}) 

它不会崩溃。但是,当我使用encode_plus()时:

modelname = 'deepset/bert-base-cased-squad2'
model = BertForQuestionAnswering.from_pretrained(modelname)
tokenizer = AutoTokenizer.from_pretrained(modelname)

inputs= tokenizer.encode_plus(question,context,return_tensors='pt') 

我有这个错误:
张量a(629)的大小必须与张量b(512)在非单态维度1的大小相匹配

我理解,但为什么我在第一个案例中没有同样的错误?有人能解释一下区别吗


Tags: frombasemodelnlpcontexttokenizerbertquestion
1条回答
网友
1楼 · 发布于 2024-05-23 23:02:49

在第二个代码中出现错误的原因是输入数据不适合pytorch张量。为此,在调用标记器时必须将截断标志设置为True。因此,当不适合张量的数据到达时,它只需要适合的数据。i、 e:

tokenizer = AutoTokenizer.from_pretrained('deepset/bert-base-cased-squad2',truncation= True )

使用管道时没有问题,可能是因为管道中使用的预先训练模型的开发人员默认应用了此过程

相关问题 更多 >