nn.Embedding 사용 방법

nn.Embedding

  • 출처 : <위키독스>

  • 임베딩 층(embedding layer)을 만들어 훈련 데이터로부터 처음부터 임베딩 벡터를 학습하는 방법을 nn.Embedding을 이용하여 구현합니다.

  • 주요 파라미터는 2개입니다.

    • num_embeddings : 임베딩을 할 단어들의 개수. (단어 집합의 크기)
    • embedding_dim : 임베딩 할 벡터의 차원입니다. (사용자 정의)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 단어 집합의 크기의 행을 가지는 임베딩 테이블 생성
import torch.nn as nn
embedding_layer = nn.Embedding(num_embeddings=len(vocab),
embedding_dim=3)

embedding_layer
# Embedding(10, 3, padding_idx=1)
````

```python
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)
Author

InhwanCho

Posted on

2023-01-07

Updated on

2023-01-07

Licensed under

Comments