더북(TheBook)

임베딩 계층에서는 출력을 위해 딕셔너리를 조회할 테이블을 만들며, GRU 계층에서는 다음 단어를 예측하기 위한 확률을 계산합니다. 그 후 선형 계층에서는 계산된 확률 값 중 최적의 값(최종 출력 단어)을 선택하기 위해 소프트맥스 활성화 함수를 사용합니다.

코드 10-30 디코더 네트워크

class Decoder(nn.Module):
    def __init__(self, output_dim, hidden_dim, embbed_dim, num_layers):
        super(Decoder, self).__init__()

        self.embbed_dim = embbed_dim
        self.hidden_dim = hidden_dim
        self.output_dim = output_dim
        self.num_layers = num_layers

        self.embedding = nn.Embedding(output_dim, self.embbed_dim) ------ 임베딩 계층 초기화
        self.gru = nn.GRU(self.embbed_dim, self.hidden_dim, num_layers=self.num_layers) ------ GRU 계층 초기화
        self.out = nn.Linear(self.hidden_dim, output_dim) ------ 선형 계층 초기화
        self.softmax = nn.LogSoftmax(dim=1) ------ ①

    def forward(self, input, hidden):
        input = input.view(1, -1) ------ 입력을 (1, 배치 크기)로 변경
        embedded = F.relu(self.embedding(input))
        output, hidden = self.gru(embedded, hidden)
        prediction = self.softmax(self.out(output[0]))
        return prediction, hidden
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.