【发布时间】:2021-05-12 14:33:23
【问题描述】:
我正在尝试创建一个问答 AI,我希望它尽可能准确,而无需自己训练模型。
我可以通过他们的文档使用现有的基础模型创建一个简单的 AI:
from transformers import AlbertTokenizer, AlbertForQuestionAnswering
import torch
tokenizer = AlbertTokenizer.from_pretrained('albert-base-v2')
model = AlbertForQuestionAnswering.from_pretrained('albert-base-v2')
question, text = "What does He like?", "He likes bears"
inputs = tokenizer(question, text, return_tensors='pt')
start_positions = torch.tensor([1])
end_positions = torch.tensor([3])
outputs = model(**inputs, start_positions=start_positions, end_positions=end_positions)
loss = outputs.loss
start_scores = outputs.start_logits
end_scores = outputs.end_logits
answer_start = torch.argmax(start_scores) # get the most likely beginning of answer with the argmax of the score
answer_end = torch.argmax(end_scores) + 1
tokenizer.convert_tokens_to_string(tokenizer.convert_ids_to_tokens(inputs["input_ids"][0][answer_start:answer_end]))
但是,此模型无法像其他模型那样准确回答问题。在 HuggingFace 网站上,我找到了一个我想使用 fine-tuned model
的示例但是,说明显示了如何训练这样的模型。该示例在页面上运行,因此很明显是存在的预训练模型。
有谁知道我可以如何重用现有模型,这样我就不必从头开始训练一个?
【问题讨论】:
-
训练现有模型包含在任何 DL 框架的文档和附带示例中。你已经有了“微调”这个词;用它来寻找例子。我在 2016 年第一次学习 Torch 时就知道它们存在。
-
@Prune 我不想训练,我只是不知道如何使用我找到的现有模型,结果他们将页面上的说明隐藏在一个奇怪的地方。我要测试一下,然后发布答案
-
很好,只要您发布的解决方案是新的。你似乎是一本写得不好的手册的受害者。鉴于现有的所有 Torch 文档,我怀疑 Stack Overflow 是否是发布您的解决方案的好地方。请先检查其他来源。了解如何加载现有模型。
-
@Prune,你绝对是正确的。我已经看到很多问题以更少的成本结束。但是,我将此类问题视为使用工具的帮助。例如关于 GIt 的问题,技术上与编程无关。
-
无论如何我都会发布答案,因为当我在 SO 上找不到答案时我会感到沮丧,并且有人可能会觉得它很有用(即使这个问题已关闭)
标签: python nlp artificial-intelligence torch bert-language-model