더북(TheBook)

코드 10-64 각 단어에 대한 벡터 형태 확인

token_vecs_cat = [] ------ 형태가 [33×(33×768)]인 벡터를 [33×25,344]로 변경하여 저장
for token in token_embeddings: ------ token_embeddings는 [33×12×768] 형태의 텐서를 갖습니다.
    cat_vec = torch.cat((token[-1], token[-2], token[-3], token[-4]), dim=0)
    token_vecs_cat.append(cat_vec) ------ ①
print('형태는: %d x %d' % (len(token_vecs_cat), len(token_vecs_cat[0])))

① 개별적 토큰은 [12 x 768]의 형태를 가지며, 네 개의 계층을 이어 붙이면 각 계층의 벡터는 768개의 값을 갖게 되므로 ‘cat_vec’의 길이는 3072가 됩니다. 이때 ‘cat_vec’는 토큰을 의미합니다.

다음은 최종 토큰의 형태를 출력한 결과입니다.

형태는: 33 x 3072

마지막으로 네 개의 계층을 연결하여 단어 벡터를 생성합니다.

코드 10-65 계층을 결합하여 최종 단어 벡터 생성

token_vecs_sum = [] ------ [33×768] 형태의 토큰을 벡터로 저장
for token in token_embeddings: ------ ‘token_embeddings’는 [33×12×768] 형태의 토큰을 갖습니다.
    sum_vec = torch.sum(token[-4:], dim=0) ------ 마지막 네 개 계층의 벡터를 합산
    token_vecs_sum.append(sum_vec) ------ ‘sum_vec’를 사용하여 토큰을 표현
print('형태는: %d x %d' % (len(token_vecs_sum), len(token_vecs_sum[0])))
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.