모델 출력[[model-outputs]]
모든 모델에는 [~utils.ModelOutput]의 서브클래스의 인스턴스인 모델 출력이 있습니다. 이들은
모델에서 반환되는 모든 정보를 포함하는 데이터 구조이지만 튜플이나 딕셔너리로도 사용할 수 있습니다.
예제를 통해 살펴보겠습니다:
from transformers import BertTokenizer, BertForSequenceClassification
import torch
tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-uncased")
model = BertForSequenceClassification.from_pretrained("google-bert/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(선택적) 항목이 있습니다. 여기에서는 labels를 전달했기 때문에 loss가 있지만 hidden_states와 attentions가 없는데, 이는 output_hidden_states=True 또는 output_attentions=True를 전달하지 않았기 때문입니다.
output_hidden_states=True를 전달할 때 outputs.hidden_states[-1]가 outputs.last_hidden_state와 정확히 일치할 것으로 예상할 수 있습니다.
하지만 항상 그런 것은 아닙니다. 일부 모델은 마지막 은닉 상태가 반환될 때 정규화를 적용하거나 다른 후속 프로세스를 적용합니다.
일반적으로 사용할 때와 동일하게 각 속성들에 접근할 수 있으며, 모델이 해당 속성을 반환하지 않은 경우 None이 반환됩니다. 예시에서는 outputs.loss는 모델에서 계산한 손실이고 outputs.attentions는 None입니다.
outputs 객체를 튜플로 간주할 때는 None 값이 없는 속성만 고려합니다.
예시에서는 loss와 logits라는 두 개의 요소가 있습니다. 그러므로,
outputs[:2]
는 (outputs.loss, outputs.logits) 튜플을 반환합니다.
outputs 객체를 딕셔너리로 간주할 때는 None 값이 없는 속성만 고려합니다.
예시에는 loss와 logits라는 두 개의 키가 있습니다.
여기서부터는 두 가지 이상의 모델 유형에서 사용되는 일반 모델 출력을 다룹니다. 구체적인 출력 유형은 해당 모델 페이지에 문서화되어 있습니다.
ModelOutput[[transformers.utils.ModelOutput]]
[[autodoc]] utils.ModelOutput - to_tuple
BaseModelOutput[[transformers.BaseModelOutput]]
[[autodoc]] modeling_outputs.BaseModelOutput
BaseModelOutputWithPooling[[transformers.modeling_outputs.BaseModelOutputWithPooling]]
[[autodoc]] modeling_outputs.BaseModelOutputWithPooling
BaseModelOutputWithCrossAttentions[[transformers.modeling_outputs.BaseModelOutputWithCrossAttentions]]
[[autodoc]] modeling_outputs.BaseModelOutputWithCrossAttentions
BaseModelOutputWithPoolingAndCrossAttentions[[transformers.modeling_outputs.BaseModelOutputWithPoolingAndCrossAttentions]]
[[autodoc]] modeling_outputs.BaseModelOutputWithPoolingAndCrossAttentions
BaseModelOutputWithPast[[transformers.modeling_outputs.BaseModelOutputWithPast]]
[[autodoc]] modeling_outputs.BaseModelOutputWithPast
BaseModelOutputWithPastAndCrossAttentions[[transformers.modeling_outputs.BaseModelOutputWithPastAndCrossAttentions]]
[[autodoc]] modeling_outputs.BaseModelOutputWithPastAndCrossAttentions
Seq2SeqModelOutput[[transformers.modeling_outputs.Seq2SeqModelOutput]]
[[autodoc]] modeling_outputs.Seq2SeqModelOutput
CausalLMOutput[[transformers.modeling_outputs.CausalLMOutput]]
[[autodoc]] modeling_outputs.CausalLMOutput
CausalLMOutputWithCrossAttentions[[transformers.modeling_outputs.CausalLMOutputWithCrossAttentions]]
[[autodoc]] modeling_outputs.CausalLMOutputWithCrossAttentions
CausalLMOutputWithPast[[transformers.modeling_outputs.CausalLMOutputWithPast]]
[[autodoc]] modeling_outputs.CausalLMOutputWithPast
MaskedLMOutput[[transformers.modeling_outputs.MaskedLMOutput]]
[[autodoc]] modeling_outputs.MaskedLMOutput
Seq2SeqLMOutput[[transformers.modeling_outputs.Seq2SeqLMOutput]]
[[autodoc]] modeling_outputs.Seq2SeqLMOutput
NextSentencePredictorOutput[[transformers.modeling_outputs.NextSentencePredictorOutput]]
[[autodoc]] modeling_outputs.NextSentencePredictorOutput
SequenceClassifierOutput[[transformers.modeling_outputs.SequenceClassifierOutput]]
[[autodoc]] modeling_outputs.SequenceClassifierOutput
Seq2SeqSequenceClassifierOutput[[transformers.modeling_outputs.Seq2SeqSequenceClassifierOutput]]
[[autodoc]] modeling_outputs.Seq2SeqSequenceClassifierOutput
MultipleChoiceModelOutput[[transformers.modeling_outputs.MultipleChoiceModelOutput]]
[[autodoc]] modeling_outputs.MultipleChoiceModelOutput
TokenClassifierOutput[[transformers.modeling_outputs.TokenClassifierOutput]]
[[autodoc]] modeling_outputs.TokenClassifierOutput
QuestionAnsweringModelOutput[[transformers.modeling_outputs.QuestionAnsweringModelOutput]]
[[autodoc]] modeling_outputs.QuestionAnsweringModelOutput
Seq2SeqQuestionAnsweringModelOutput[[transformers.modeling_outputs.Seq2SeqQuestionAnsweringModelOutput]]
[[autodoc]] modeling_outputs.Seq2SeqQuestionAnsweringModelOutput
Seq2SeqSpectrogramOutput[[transformers.modeling_outputs.Seq2SeqSpectrogramOutput]]
[[autodoc]] modeling_outputs.Seq2SeqSpectrogramOutput
SemanticSegmenterOutput[[transformers.modeling_outputs.SemanticSegmenterOutput]]
[[autodoc]] modeling_outputs.SemanticSegmenterOutput
ImageClassifierOutput[[transformers.modeling_outputs.ImageClassifierOutput]]
[[autodoc]] modeling_outputs.ImageClassifierOutput
ImageClassifierOutputWithNoAttention[[transformers.modeling_outputs.ImageClassifierOutputWithNoAttention]]
[[autodoc]] modeling_outputs.ImageClassifierOutputWithNoAttention
DepthEstimatorOutput[[transformers.modeling_outputs.DepthEstimatorOutput]]
[[autodoc]] modeling_outputs.DepthEstimatorOutput
Wav2Vec2BaseModelOutput[[transformers.modeling_outputs.Wav2Vec2BaseModelOutput]]
[[autodoc]] modeling_outputs.Wav2Vec2BaseModelOutput
XVectorOutput[[transformers.modeling_outputs.XVectorOutput]]
[[autodoc]] modeling_outputs.XVectorOutput
Seq2SeqTSModelOutput[[transformers.modeling_outputs.Seq2SeqTSModelOutput]]
[[autodoc]] modeling_outputs.Seq2SeqTSModelOutput
Seq2SeqTSPredictionOutput[[transformers.modeling_outputs.Seq2SeqTSPredictionOutput]]
[[autodoc]] modeling_outputs.Seq2SeqTSPredictionOutput
SampleTSPredictionOutput[[transformers.modeling_outputs.SampleTSPredictionOutput]]
[[autodoc]] modeling_outputs.SampleTSPredictionOutput
TFBaseModelOutput[[transformers.modeling_outputs.TFBaseModelOutput]]
[[autodoc]] modeling_tf_outputs.TFBaseModelOutput
TFBaseModelOutputWithPooling[[transformers.modeling_tf_outputs.TFBaseModelOutputWithPooling]]
[[autodoc]] modeling_tf_outputs.TFBaseModelOutputWithPooling
TFBaseModelOutputWithPoolingAndCrossAttentions[[transformers.modeling_tf_outputs.TFBaseModelOutputWithPoolingAndCrossAttentions]]
[[autodoc]] modeling_tf_outputs.TFBaseModelOutputWithPoolingAndCrossAttentions
TFBaseModelOutputWithPast[[transformers.modeling_tf_outputs.TFBaseModelOutputWithPast]]
[[autodoc]] modeling_tf_outputs.TFBaseModelOutputWithPast
TFBaseModelOutputWithPastAndCrossAttentions[[transformers.modeling_tf_outputs.TFBaseModelOutputWithPastAndCrossAttentions]]
[[autodoc]] modeling_tf_outputs.TFBaseModelOutputWithPastAndCrossAttentions
TFSeq2SeqModelOutput[[transformers.modeling_tf_outputs.TFSeq2SeqModelOutput]]
[[autodoc]] modeling_tf_outputs.TFSeq2SeqModelOutput
TFCausalLMOutput[[transformers.modeling_tf_outputs.TFCausalLMOutput]]
[[autodoc]] modeling_tf_outputs.TFCausalLMOutput
TFCausalLMOutputWithCrossAttentions[[transformers.modeling_tf_outputs.TFCausalLMOutputWithCrossAttentions]]
[[autodoc]] modeling_tf_outputs.TFCausalLMOutputWithCrossAttentions
TFCausalLMOutputWithPast[[transformers.modeling_tf_outputs.TFCausalLMOutputWithPast]]
[[autodoc]] modeling_tf_outputs.TFCausalLMOutputWithPast
TFMaskedLMOutput[[transformers.modeling_tf_outputs.TFMaskedLMOutput]]
[[autodoc]] modeling_tf_outputs.TFMaskedLMOutput
TFSeq2SeqLMOutput[[transformers.modeling_tf_outputs.TFSeq2SeqLMOutput]]
[[autodoc]] modeling_tf_outputs.TFSeq2SeqLMOutput
TFNextSentencePredictorOutput[[transformers.modeling_tf_outputs.TFNextSentencePredictorOutput]]
[[autodoc]] modeling_tf_outputs.TFNextSentencePredictorOutput
TFSequenceClassifierOutput[[transformers.modeling_tf_outputs.TFSequenceClassifierOutput]]
[[autodoc]] modeling_tf_outputs.TFSequenceClassifierOutput
TFSeq2SeqSequenceClassifierOutput[[transformers.modeling_tf_outputs.TFSeq2SeqSequenceClassifierOutput]]
[[autodoc]] modeling_tf_outputs.TFSeq2SeqSequenceClassifierOutput
TFMultipleChoiceModelOutput[[transformers.modeling_tf_outputs.TFMultipleChoiceModelOutput]]
[[autodoc]] modeling_tf_outputs.TFMultipleChoiceModelOutput
TFTokenClassifierOutput[[transformers.modeling_tf_outputs.TFTokenClassifierOutput]]
[[autodoc]] modeling_tf_outputs.TFTokenClassifierOutput
TFQuestionAnsweringModelOutput[[transformers.modeling_tf_outputs.TFQuestionAnsweringModelOutput]]
[[autodoc]] modeling_tf_outputs.TFQuestionAnsweringModelOutput
TFSeq2SeqQuestionAnsweringModelOutput[[transformers.modeling_tf_outputs.TFSeq2SeqQuestionAnsweringModelOutput]]
[[autodoc]] modeling_tf_outputs.TFSeq2SeqQuestionAnsweringModelOutput
FlaxBaseModelOutput[[transformers.modeling_flax_outputs.FlaxBaseModelOutput]]
[[autodoc]] modeling_flax_outputs.FlaxBaseModelOutput
FlaxBaseModelOutputWithPast[[transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPast]]
[[autodoc]] modeling_flax_outputs.FlaxBaseModelOutputWithPast
FlaxBaseModelOutputWithPooling[[transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPooling]]
[[autodoc]] modeling_flax_outputs.FlaxBaseModelOutputWithPooling
FlaxBaseModelOutputWithPastAndCrossAttentions[[transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPastAndCrossAttentions]]
[[autodoc]] modeling_flax_outputs.FlaxBaseModelOutputWithPastAndCrossAttentions
FlaxSeq2SeqModelOutput[[transformers.modeling_flax_outputs.FlaxSeq2SeqModelOutput]]
[[autodoc]] modeling_flax_outputs.FlaxSeq2SeqModelOutput
FlaxCausalLMOutputWithCrossAttentions[[transformers.modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentions]]
[[autodoc]] modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentions
FlaxMaskedLMOutput[[transformers.modeling_flax_outputs.FlaxMaskedLMOutput]]
[[autodoc]] modeling_flax_outputs.FlaxMaskedLMOutput
FlaxSeq2SeqLMOutput[[transformers.modeling_flax_outputs.FlaxSeq2SeqLMOutput]]
[[autodoc]] modeling_flax_outputs.FlaxSeq2SeqLMOutput
FlaxNextSentencePredictorOutput[[transformers.modeling_flax_outputs.FlaxNextSentencePredictorOutput]]
[[autodoc]] modeling_flax_outputs.FlaxNextSentencePredictorOutput
FlaxSequenceClassifierOutput[[transformers.modeling_flax_outputs.FlaxSequenceClassifierOutput]]
[[autodoc]] modeling_flax_outputs.FlaxSequenceClassifierOutput
FlaxSeq2SeqSequenceClassifierOutput[[transformers.modeling_flax_outputs.FlaxSeq2SeqSequenceClassifierOutput]]
[[autodoc]] modeling_flax_outputs.FlaxSeq2SeqSequenceClassifierOutput
FlaxMultipleChoiceModelOutput[[transformers.modeling_flax_outputs.FlaxMultipleChoiceModelOutput]]
[[autodoc]] modeling_flax_outputs.FlaxMultipleChoiceModelOutput
FlaxTokenClassifierOutput[[transformers.modeling_flax_outputs.FlaxTokenClassifierOutput]]
[[autodoc]] modeling_flax_outputs.FlaxTokenClassifierOutput
FlaxQuestionAnsweringModelOutput[[transformers.modeling_flax_outputs.FlaxQuestionAnsweringModelOutput]]
[[autodoc]] modeling_flax_outputs.FlaxQuestionAnsweringModelOutput
FlaxSeq2SeqQuestionAnsweringModelOutput[[transformers.modeling_flax_outputs.FlaxSeq2SeqQuestionAnsweringModelOutput]]
[[autodoc]] modeling_flax_outputs.FlaxSeq2SeqQuestionAnsweringModelOutput