1. BERT 모델은 일반적으로 두 가지 주요 출력을 생성한다 :
2. outputs[1]이 [CLS] 토큰에 해당하는 이유 :
from transformers import BertModel, BertTokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertModel.from_pretrained('bert-base-uncased')
text = "Hello, how are you?"
inputs = tokenizer(text, return_tensors="pt")
outputs = model(**inputs)
sequence_output = outputs[0] # 전체 시퀀스의 마지막 히든 스테이트
pooled_output = outputs[1] # [CLS] 토큰의 풀링된 출력
print(sequence_output.shape) # 예: torch.Size([1, 8, 768])
print(pooled_output.shape) # 예: torch.Size([1, 768])
이 예시에서 pooled_output (outputs[1])은 [CLS] 토큰에 대한 특별히 처리된 표현으로, 이는 전체 입력 시퀀스의 정보를 압축한 형태로 볼 수 있으며, 주로 분류 작업 등에 활용됨.