所有模型的输出都是[~utils.ModelOutput
]子类的实例。这些数据结构包含模型返回的所有信息,但也可以用作元组或字典。
让我们看一个示例:
from transformers import BertTokenizer, BertForSequenceClassification
import torch
tokenizer = BertTokenizer.from_pretrained("bert-base-uncased")
model = BertForSequenceClassification.from_pretrained("bert-base-uncased")
inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
labels = torch.tensor([1]).unsqueeze(0) # 批量大小为1
outputs = model(**inputs, labels=labels)
outputs
对象是[~modeling_outputs.SequenceClassifierOutput
],正如我们在下面该类的文档中可以看到的,
它意味着它有一个可选的loss
,一个logits
,一个可选的hidden_states
和一个可选的attentions
属性。
这里我们有一个loss
,因为我们传递了labels
,但我们没有hidden_states
和attentions
,因为我们没有传递
output_hidden_states=True
或output_attentions=True
。
在传递output_hidden_states=True
时,你可以期望outputs.hidden_states[-1]
与outputs.last_hidden_states
完全匹配。
然而,情况并非一直如此。有些模型在返回最后的隐藏状态时对其应用归一化或后续处理。
你可以像通常一样访问每个属性,如果该属性未被模型返回,你将得到None
。
在这里,例如,outputs.loss
是模型计算的损失,outputs.attentions
是None
。
当将我们的outputs
对象视为元组时,它只考虑那些没有None
值的属性。
这里,例如,它有两个元素,先是loss
,然后是logits
,所以
outputs[:2]
例如,将返回元组(outputs.loss, outputs.logits)
。
当将我们的outputs
对象视为字典时,它只考虑那些没有None
值的属性。
这里,例如,它有两个键,分别是loss
和logits
。
这里我们记录了使用多个模型类型的通用模型输出。特定输出类型在相应的模型页面中有记录。
[[autodoc]] utils.ModelOutput - to_tuple
[[autodoc]] modeling_outputs.BaseModelOutput
[[autodoc]] modeling_outputs.BaseModelOutputWithPooling
[[autodoc]] modeling_outputs.BaseModelOutputWithCrossAttentions
[[autodoc]] modeling_outputs.BaseModelOutputWithPoolingAndCrossAttentions
[[autodoc]] modeling_outputs.BaseModelOutputWithPast
[[autodoc]] modeling_outputs.BaseModelOutputWithPastAndCrossAttentions
[[autodoc]] modeling_outputs.Seq2SeqModelOutput
[[autodoc]] modeling_outputs.CausalLMOutput
[[autodoc]] modeling_outputs.CausalLMOutputWithCrossAttentions
[[autodoc]] modeling_outputs.CausalLMOutputWithPast
[[autodoc]] modeling_outputs.MaskedLMOutput
[[autodoc]] modeling_outputs.Seq2SeqLMOutput
[[autodoc]] modeling_outputs.NextSentencePredictorOutput
[[autodoc]] modeling_outputs.SequenceClassifierOutput
[[autodoc]] modeling_outputs.Seq2SeqSequenceClassifierOutput
[[autodoc]] modeling_outputs.MultipleChoiceModelOutput
[[autodoc]] modeling_outputs.TokenClassifierOutput
[[autodoc]] modeling_outputs.QuestionAnsweringModelOutput
[[autodoc]] modeling_outputs.Seq2SeqQuestionAnsweringModelOutput
[[autodoc]] modeling_outputs.Seq2SeqSpectrogramOutput
[[autodoc]] modeling_outputs.SemanticSegmenterOutput
[[autodoc]] modeling_outputs.ImageClassifierOutput
[[autodoc]] modeling_outputs.ImageClassifierOutputWithNoAttention
[[autodoc]] modeling_outputs.DepthEstimatorOutput
[[autodoc]] modeling_outputs.Wav2Vec2BaseModelOutput
[[autodoc]] modeling_outputs.XVectorOutput
[[autodoc]] modeling_outputs.Seq2SeqTSModelOutput
[[autodoc]] modeling_outputs.Seq2SeqTSPredictionOutput
[[autodoc]] modeling_outputs.SampleTSPredictionOutput
[[autodoc]] modeling_tf_outputs.TFBaseModelOutput
[[autodoc]] modeling_tf_outputs.TFBaseModelOutputWithPooling
[[autodoc]] modeling_tf_outputs.TFBaseModelOutputWithPoolingAndCrossAttentions
[[autodoc]] modeling_tf_outputs.TFBaseModelOutputWithPast
[[autodoc]] modeling_tf_outputs.TFBaseModelOutputWithPastAndCrossAttentions
[[autodoc]] modeling_tf_outputs.TFSeq2SeqModelOutput
[[autodoc]] modeling_tf_outputs.TFCausalLMOutput
[[autodoc]] modeling_tf_outputs.TFCausalLMOutputWithCrossAttentions
[[autodoc]] modeling_tf_outputs.TFCausalLMOutputWithPast
[[autodoc]] modeling_tf_outputs.TFMaskedLMOutput
[[autodoc]] modeling_tf_outputs.TFSeq2SeqLMOutput
[[autodoc]] modeling_tf_outputs.TFNextSentencePredictorOutput
[[autodoc]] modeling_tf_outputs.TFSequenceClassifierOutput
[[autodoc]] modeling_tf_outputs.TFSeq2SeqSequenceClassifierOutput
[[autodoc]] modeling_tf_outputs.TFMultipleChoiceModelOutput
[[autodoc]] modeling_tf_outputs.TFTokenClassifierOutput
[[autodoc]] modeling_tf_outputs.TFQuestionAnsweringModelOutput
[[autodoc]] modeling_tf_outputs.TFSeq2SeqQuestionAnsweringModelOutput
[[autodoc]] modeling_flax_outputs.FlaxBaseModelOutput
[[autodoc]] modeling_flax_outputs.FlaxBaseModelOutputWithPast
[[autodoc]] modeling_flax_outputs.FlaxBaseModelOutputWithPooling
[[autodoc]] modeling_flax_outputs.FlaxBaseModelOutputWithPastAndCrossAttentions
[[autodoc]] modeling_flax_outputs.FlaxSeq2SeqModelOutput
[[autodoc]] modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentions
[[autodoc]] modeling_flax_outputs.FlaxMaskedLMOutput
[[autodoc]] modeling_flax_outputs.FlaxSeq2SeqLMOutput
[[autodoc]] modeling_flax_outputs.FlaxNextSentencePredictorOutput
[[autodoc]] modeling_flax_outputs.FlaxSequenceClassifierOutput
[[autodoc]] modeling_flax_outputs.FlaxSeq2SeqSequenceClassifierOutput
[[autodoc]] modeling_flax_outputs.FlaxMultipleChoiceModelOutput
[[autodoc]] modeling_flax_outputs.FlaxTokenClassifierOutput
[[autodoc]] modeling_flax_outputs.FlaxQuestionAnsweringModelOutput
[[autodoc]] modeling_flax_outputs.FlaxSeq2SeqQuestionAnsweringModelOutput