더북(TheBook)

코드 10-29 인코더 네트워크

class Encoder(nn.Module):
    def __init__(self, input_dim, hidden_dim, embbed_dim, num_layers):
        super(Encoder, self).__init__()
        self.input_dim = input_dim ------ 인코더에서 사용할 입력층
        self.embbed_dim = embbed_dim ------ 인코더에서 사용할 임베딩 계층
        self.hidden_dim = hidden_dim ------ 인코더에서 사용할 은닉층(이전 은닉층)
        self.num_layers = num_layers ------ 인코더에서 사용할 GRU의 계층 개수
        self.embedding = nn.Embedding(input_dim, self.embbed_dim) ------ 임베딩 계층 초기화
        self.gru = nn.GRU(self.embbed_dim, self.hidden_dim, num_layers=self.num_layers) ------ 임베딩 차원, 은닉층 차원, GRU의 계층 개수를 이용하여 GRU 계층을 초기화

    def forward(self, src):
        embedded = self.embedding(src).view(1, 1, -1) ------ 임베딩 처리
        outputs, hidden = self.gru(embedded) ------ 임베딩 결과를 GRU 모델에 적용
        return outputs, hidden

디코더는 인코더 출력을 디코딩하여 다음 출력을 예측합니다. 디코더는 임베딩 계층, GRU 계층, 선형(linear) 계층으로 구성됩니다. 코드 10-30과 비교하기 위해 디코더 네트워크를 영문으로 작성했습니다.

▲ 그림 10-17 디코더 네트워크

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.