본문 바로가기

Programming/PyTorch

[PyTorch] torch.nn.Embedding 의 역할

728x90
반응형

* PyTorch 공식 문서를 참고했습니다.

 

Embedding — PyTorch 1.10.0 documentation

Shortcuts

pytorch.org

 

torch.nn.Embedding 모듈은 학습 데이터로부터 임베딩 벡터를 생성하는 역할을 합니다.

보통은 pretrain된 임베딩을 사용하는 경우도 많습니다!

임베딩을 만드는 원리는 아래 사이트에 자세한 설명이 되어 있으니 한 번 읽어보시면 좋을 것 같습니다.

 

07. 파이토치(PyTorch)의 nn.Embedding()

파이토치에서는 임베딩 벡터를 사용하는 방법이 크게 두 가지가 있습니다. 바로 임베딩 층(embedding layer)을 만들어 훈련 데이터로부터 처음부터 임베딩 벡터를 학습 ...

wikidocs.net

간략하게 설명하자면 과정은 다음과 같습니다.

 

도메인 -> 정수 매핑(룩업 테이블에서 사용할 인덱스) -> 임베딩 테이블 -> 임베딩 벡터

 

nn.Embedding 에서는 내가 원하는 길이의 임베딩 벡터를 임의로 만들어주고 학습 과정 동안 적절한 임베딩 벡터로 조정 해줍니다.

 

* 기본 사용법

torch.nn.Embedding(num_embeddings, embedding_dim)

 

1) num_embeddings : 임베딩 사전 개수 (도메인 개수, 즉 몇 개의 임베딩을 만들 것인지)

2) embedding_dim : 임베딩 차원 크기

 

그 외의 여러 parameter는 필요에 따라 공식 사이트를 참고하시길 바랍니다. 

 

 

* 공식 홈페이지 예제 코드

# 3 차원짜리 임베딩 10개 생성
embedding = nn.Embedding(10, 3)

# [1, 2, 4, 5], [4, 3, 2, 9]에 대한 임베딩 값 구하기
input = torch.LongTensor([[1,2,4,5],[4,3,2,9]])
embedding(input)

'''
tensor([[[-0.0251, -1.6902,  0.7172],
         [-0.6431,  0.0748,  0.6969],
         [ 1.4970,  1.3448, -0.9685],
         [-0.3677, -2.7265, -0.1685]],

        [[ 1.4970,  1.3448, -0.9685],
         [ 0.4362, -0.4004,  0.9400],
         [-0.6431,  0.0748,  0.6969],
         [ 0.9124, -2.3616,  1.1151]]])
'''

 

 

728x90
반응형