由于BertForMultipleChoice模型是一个用于多项选择的分类器,它需要根据提供的上下文来预测可能正确的选项。因此,我们可以通过以下步骤获取模型默认认为最正确的选项:
from transformers import BertForMultipleChoice, BertTokenizer
model = BertForMultipleChoice.from_pretrained('bert-base-uncased')
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
predict()
方法获取预测结果:context = "The quick brown fox jumps over the lazy dog."
options = ["A. rabbit", "B. mouse", "C. dog", "D. cat"]
inputs = []
for option in options:
encoded_dict = tokenizer.encode_plus(context, option,
add_special_tokens=True,
max_length=128,
pad_to_max_length=True,
return_token_type_ids=True)
inputs.append(encoded_dict)
input_ids = [i['input_ids'] for i in inputs]
attention_masks = [i['attention_mask'] for i in inputs]
token_type_ids = [i['token_type_ids'] for i in inputs]
outputs = model(torch.tensor(input_ids),
token_type_ids=torch.tensor(token_type_ids),
attention_mask=torch.tensor(attention_masks),
labels=None)
logits = outputs[0]
probabilities = torch.nn.functional.softmax(logits, dim=1)
predicted_option = options[torch.argmax(probabilities).item()]
print("模型默认认为最正确的选项是:", predicted_option)
在上面的示例中,我们提供了一段上下文和四个选项。使用BertTokenizer对上下文和选项进行编码,然后将它们传递给BertForMultipleChoice模型进行预测。最终,我们使用torch.argmax()
方法获取最高概率的选项,并返回它的文本表示。
上一篇:BertForMaskedLM中的masked_lm_labels参数如何工作?
下一篇:BertForSequenceClassification.from_pretrained和python run_glue.py之间有什么区别?