我一直在尝试让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
我试过了:
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。
发布于 2021-08-16 16:41:37
您不必将类附加到输入文本,但可以在单独的列表中定义它们。
AutoModelForSequenceClassification将生成logits,当通过softmax传递时,它将为您提供类标签。
还有一个建议:看看我定义记号赋予器和模型的方式。这样,当您运行代码时,就可以在途中下载它们。
请参考下面的代码:
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])https://stackoverflow.com/questions/68800382
复制相似问题