首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将可能的类名传递给distilbert

如何将可能的类名传递给distilbert
EN

Stack Overflow用户
提问于 2021-08-16 09:30:43
回答 1查看 78关注 0票数 0

我一直在尝试让distilbert正常工作,我已经下载了模型并使用了AutoTokenizer.from_pretrained()和AutoModelForSequenceClassification.from_pretrained().我已经尝试了几天来传递huggingface模型卡页面上“可能的类名”中的参数:https://huggingface.co/typeform/distilbert-base-uncased-mnli?candidateLabels=positive%2C+negative%2C+neutral&multiClass=true&text=which+stocks+will+go+down+during+new+years

我试过了:

代码语言:javascript
复制
from transformers import AutoTokenizer, AutoModelForSequenceClassification
tokenizer = AutoTokenizer.from_pretrained('.')
model = AutoModelForSequenceClassification.from_pretrained('.')

text = "Dummy text"
text += "[SEP]Positive[SEP]Neutral[SEP]Negative"
encodedInput = tokenizer(text, return_tensors="pt")
output = model(**encodedInput)
print(output)

它应该输出“正”、“中性”和“负”的蕴涵值。有人知道怎么做吗?我正在使用pytorch。

EN

回答 1

Stack Overflow用户

发布于 2021-08-16 16:41:37

您不必将类附加到输入文本,但可以在单独的列表中定义它们。

AutoModelForSequenceClassification将生成logits,当通过softmax传递时,它将为您提供类标签。

还有一个建议:看看我定义记号赋予器和模型的方式。这样,当您运行代码时,就可以在途中下载它们。

请参考下面的代码:

代码语言:javascript
复制
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch

tokenizer = AutoTokenizer.from_pretrained('typeform/distilbert-base-uncased-mnli')
model     = AutoModelForSequenceClassification.from_pretrained('typeform/distilbert-base-uncased-mnli')
classes   = ['positive', 'negative', 'neutral']
text      = "Dummy text"

encodedInput = tokenizer(text, return_tensors="pt")
output       = model(**encodedInput)
output       = torch.softmax(output[0], dim=1).tolist()[0]

max_idx = output.index(max(output))
print(classes[max_idx])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68800382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档