【问题标题】:Is there a way for inference with torchtext using from_pretrained() transformers method?有没有办法使用 from_pretrained() 转换器方法推断 torchtext?
【发布时间】:2020-12-23 15:47:39
【问题描述】:
BertTokenizer.save_pretrained("OUTPUT_DIR")

将 vocab.txt、special_tokens_map.json 和 tokenizer_config.json 保存到我的输出目录, 可用的火车模型存储为 pytorch_model.bin 并且配置也在那里。

如何使用这些进行推理,最好是使用 torchtext?

【问题讨论】:

  • 我知道我应该使用 from_pretrained() 方法

标签: nlp pytorch bert-language-model inference torchtext


【解决方案1】:

为了进行推理,你必须再次加载分词器和模型,如下所示(这里我假设你训练的模型是BertForSequenceClassification):

tokenizer = BertTokenizer.from_pretrained("path_to_directory")
model = BertForSequenceClassification.from_pretrained("path_to_directory")

“path_to_directory”是一个字符串,例如"./model"(如果您的目录名为“model”,并且您当前位于它的父目录中)。分词器和模型会自动从目录中推断出他们需要哪些文件。标记器将使用 vocab.txt 文件,模型将使用 config.json 文件来设置其超参数以及 pytorch_model.bin 文件来加载预训练的权重。您只需确保所有这些文件都位于该目录中。

你知道如何为像 BERT 这样的模型提供新句子吗?我对 TorchText 不熟悉,但你可以按如下方式进行推理:

sentence = "This is a new sentence"
inputs = tokenizer(sentence, padding='max_length', truncation=True, return_tensors="pt")
outputs = model(**inputs)

tokenizer 会将句子转换为 BERT 可以理解的格式(即输入 id、token 类型 id 等作为 PyTorch 张量),包括填充和截断。 outputs 变量是一个 Python 元组,包含原始 logits。

【讨论】:

  • 非常感谢,这绝对是我前进的方向。我还想问:我必须加载一个基于“bert-base-cased”的微调多类分类模型,我已经尝试按照您上面的指示进行操作。没有错误发生,但是当我使用模型进行推理时,分类结果是荒谬的,我确信微调模型是可以的,因为我可以获得测试混淆矩阵。我正在尝试使用测试集重现结果,所以我想我以错误的方式加载模型..任何提示或文档要阅读?提前谢谢
  • 也许您以错误的方式将 logits 转换为类别预测?你能分享一个 Colab 笔记本吗?
猜你喜欢
  • 2021-06-16
  • 1970-01-01
  • 2012-03-17
  • 2019-06-27
  • 2021-07-21
  • 2016-04-13
  • 1970-01-01
  • 2011-05-09
  • 1970-01-01
相关资源
最近更新 更多