- Published On
nn.Embedding 사용 방법
nn.Embedding
-
출처 : 위키독스
-
임베딩 층(embedding layer)을 만들어 훈련 데이터로부터 처음부터 임베딩 벡터를 학습하는 방법을
nn.Embedding
을 이용하여 구현합니다. -
주요 파라미터는 2개입니다.
- num_embeddings : 임베딩을 할 단어들의 개수. (단어 집합의 크기)
- embedding_dim : 임베딩 할 벡터의 차원입니다. (사용자 정의)
import torch.nn as nn
train_data = 'we can do lots of things like climbing do'
# 중복을 제거한 단어들의 집합인 단어 집합 생성.(num_embeddings 인자)
word_set = set(train_data.split())
# 단어 집합의 각 단어에 고유한 정수 맵핑.
vocab = {tkn: i+2 for i, tkn in enumerate(word_set)}
vocab['<unk>'] = 0
vocab['<pad>'] = 1
print(vocab)
# {'things': 2, 'lots': 3, 'can': 4, 'like': 5, 'do': 6, 'climbing': 7, 'of': 8, 'we': 9, '<unk>': 0, '<pad>': 1}
# 단어 집합의 크기의 행을 가지는 임베딩 테이블 생성
import torch.nn as nn
embedding_layer = nn.Embedding(num_embeddings=len(vocab),
embedding_dim=3)
embedding_layer
# Embedding(10, 3, padding_idx=1)
print(embedding_layer.weight)
Parameter containing:
tensor([[ 0.2915, 0.8197, 0.1080],
[ 0.4103, 1.2429, -0.7658],
[ 0.4185, -0.0410, 2.1945],
[-0.9706, -0.6196, -1.3778],
[-1.8044, -0.8070, -1.0277],
[ 0.7752, -0.1011, 1.5459],
[ 0.2195, 1.2008, 0.1253],
[ 0.6568, 1.3255, 0.5347],
[-1.2790, 0.3015, -0.2819],
[-0.0371, -0.0291, -0.2894]], requires_grad=True)
이전 포스트
Squeeze, Unsqueeze다음 포스트
Attention 코드로 구현하기연관된 포스트 구경가기
1. Pytorch Dataset 클래스(상속) 파악하기!!2. Pytorch nn.Module 클래스(상속) 파악하기!!3. Pytorch Dataloader4. 맥북(Mac OS) 사용자의 Pytorch GPU를 사용법5. 파이토치로 nn모듈의 CNN사용하기6. 파이토치 함수7. 파이토치 기본 정보들8. 파이토치 차원 변경(reshape,view,permute) 비교9. Squeeze, Unsqueeze10. nn.Embedding 사용 방법11. NLP 분야의 MRC
간략히