import torch from transformers import BertTokenizer, BertForQuestionAnswering # 加载BERT预训练模型和分词器 model_name = 'bert-base-chinese' # 中文预训练模型 tokenizer = BertTokenizer.from_pretrained(model_name) model = BertForQuestionAnswering.from_pretrained(model_name) # 输入文本和问题 context = "我叫river,我在深圳上班。" question = "我是谁?" # 对文本和问题进行分词和编码 inputs = tokenizer.encode_plus(question, context, add_special_tokens=True, return_tensors='pt') input_ids = inputs['input_ids'].tolist()[0] token_type_ids = inputs['token_type_ids'].tolist()[0] input_ids=torch.tensor([input_ids],dtype=torch.long) token_type_ids=torch.tensor([token_type_ids],dtype=torch.long) # 使用BERT模型进行问答 start_scores, end_scores = model(input_ids=input_ids, token_type_ids=token_type_ids) print(input_ids.size(),token_type_ids.size()) print(input_ids.dtype) # 获取最佳答案的起始和结束位置 print('startscores is:',type(start_scores))
时间: 2024-04-13 11:28:10 浏览: 111
基于torch transformers 直接加载bert预训练模型计算句子相似度
5星 · 资源好评率100%
根据您提供的代码,我注意到您的问题可能是由于最后一个 `print('startscores is:',type(start_scores))` 语句引起的。在此之前,您没有对 `start_scores` 进行任何处理,因此它是一个张量。但是,当您将其与字符串连接时,它会被转换为字符串对象。
为了解决这个问题,您可以将 `start_scores` 转换回张量对象,并打印其类型。请尝试以下修改:
```python
print('startscores is:', type(start_scores.item()))
```
这样修改后的代码应该能够正确打印 `start_scores` 的类型。
如果您还有其他问题,请随时提问。
阅读全文