- Published on
nn.Embedding 사용 방법
- Authors
- Name
- Inhwan Cho
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)