2024. 6. 23. 12:31ㆍ딥러닝 모델: 파이토치
RNN도 다수의 은닉층을 가질 수 있다. 아래 그림은 순환 신경망에서 은닉층이 1개 더 추가되어 은닉층이 2개인 깊은 순환 신경망의 모습을 보여준다. 첫 번째 은닉층은 다음 은닉층에 모든 시점에 대해서 은닉 상태값을 보내주고 있다.
깊은 순환 신경망을 파이토치로 구현할 때는 nn.RNN( )의 인자인 num_layers에 값을 전달하여 층을 쌓는다. 아래는 층이 2개인 깊은 순환 신경망의 예시이다.
첫 번째 리턴값인 outputs의 크기는 층이 한 개였던 RNN 셀 때와 달라지지 않았다. 이는 마지막 층의 모든 시점의 은닉 상태들을 보여준다.
위의 형태를 보면 첫 번째 행은 첫 번째 input이 두 번째 layer까지를 통과하면서 얻은 은닉 상태이다. 이 시점에서는 아직 다른 input들은 layer를 통과하지 않았다. 0번째 시점에서 두 번째 layer가 가지고 있는 은닉 상태인 것이다. 두 번째 행은 두 번째 input이 두 번째 layer까지 통과하면서 얻은 은닉 상태이다. 1번째 시점에서 두 번째 layer가 가지고 있는 은닉 상태이다. 이렇게 마지막 10번째 input까지 layer들을 통과하면서 은닉 상태를 얻는다.
두 번째 리턴값인 _status는 층이 1개였던 RNN cell 때와 달라졌다. 이 크기는(층의 개수, 배치 크기, 은닉 상태의 크기)에 해당한다. _status는 각 레이어의 마지막 시점에서의 은닉 상태이다. 그렇기 때문에 outputs의 마지막 값과 _status의 마지막 값이 두 번째 레이어의 마지막 시점에서의 은닉 상태로, 값이 같다.
[ 0.0877, -0.6409, 0.1051, -0.5363, -0.0255, 0.7257, 0.0419, 0.4349]
'딥러닝 모델: 파이토치' 카테고리의 다른 글
Pytorch로 시작하는 딥러닝 입문(07-02. 장단기 메모리(Long Short-Term Memory: LSTM)) (0) | 2024.06.23 |
---|---|
Pytorch로 시작하는 딥러닝 입문(07-01. 순환 신경망, 양방향 순환 신경망(Bidirectional Recurrent Neural Network)) (0) | 2024.06.23 |
언어 처리 패키지(NLTK, KoNLPy) (0) | 2024.06.06 |
전이학습(Transfer Learning) (0) | 2024.06.06 |
Pytorch로 시작하는 딥러닝 입문(11-05. 코사인 유사도를 이용한 추천 시스템) (0) | 2024.04.17 |