AutoModelForSequenceClassification 与 AutoModel 之间有什么区别

问题描述 投票:0回答:2

我们可以通过 AutoModel(TFAutoModel) 函数创建模型:

from transformers import AutoModel 
model = AutoModel.from_pretrained('distilbert-base-uncase')

另一方面,模型是通过 AutoModelForSequenceClassification(TFAutoModelForSequenceClassification) 创建的:

from transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification('distilbert-base-uncase')

据我所知,这两个模型都使用 distilbert-base-uncase 库来创建模型。 从方法名称来看,第二个类(AutoModelForSequenceClassification)是为序列分类创建的。

但是两个班级的真正区别是什么?以及如何正确使用它们?

(我在huggingface里搜过,但不清楚)

nlp text-classification huggingface-transformers
2个回答
16
投票

AutoModel
AutoModelForSequenceClassification
模型之间的区别在于
AutoModelForSequenceClassification
在模型输出之上有一个分类头,可以使用基础模型轻松训练


0
投票

要添加更多信息,

两者都是从检查点实例化任何模型的类;区别在于您希望返回什么内容,例如要进一步处理的特征或逻辑。

汽车模型类:

返回隐藏状态/特征,即模型对输入句子的上下文理解。

AutoModelForSequenceClassification(考虑序列分类任务)类:

Automodel 的输出是分类器头(通常是一个或几个线性层)的输入,分类器头输出输入序列的 logit/s。 logit 的 Softmax 被解释为概率。整个管道的示意图如下所示:

不同的任务可以使用相同的架构来执行,但是每个任务都有一个与之相关的不同的头(如拥抱脸上提到的)

  • 模型+序列分类头 --> AutoModelForSequenceClassification
  • 模型+问答头 --> AutoModelForQuestionAnswering
  • 模型 + 令牌分类头 --> AutoModelForTokenClassification

我们可以根据我们的案例研究在模型之上自定义这些头(例如,添加 dropout/dense 层或将最后一层从 5 个节点修改为 2 个节点,或将 Question_answering 头转换为 text_classification 头)。

关于定制头部的一个不错的博客。

来源:HuggingFace

© www.soinside.com 2019 - 2024. All rights reserved.