[모두의 딥러닝] Stacked RNN + Softmax Layer
📗강의노트/모두의 딥러닝

[모두의 딥러닝] Stacked RNN + Softmax Layer

728x90
반응형

Sung Kim 님의 "모두의 딥러닝" 강의노트입니다

좋은 강의 감사드립니다!

https://www.youtube.com/watch?v=mQGwjrStQgg&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=5

이전에 긴 문장에 대해서 도전을 했었지만 잘 되지 않았었다!

RNN을 Deep & Wide하게 해야한다!

층을 stacking 하는 방법이다. 

rnn.MultiRNNCell을 통해 층을 쌓는 것이다.

몇 개 쌓을 것인지 n을 곱하는 것 이다.

CNN에서도 마지막에 FC를 쓰는 것 처럼 

RNN에서도 유사하게 Softmax(취하지는 않음)를 마지막에 취해준다. 

출력된 데이터를 쌓아서 하나로 입력하면 된다. 

기계적으로 항상 이렇게 reshape을 두 번 해준다고 생각하면 된다. 

처음으로, RNN에서 나온 outputs를 hidden_size에 맞게 쌓는 것이다. 그러면 한 줄 모양으로 reshape이 된다.

그리고 그 결과를 다시 펼쳐야 한다. 

이렇게 하면 섞이지 않고 잘 펼쳐진다.




 그리고 W,b를 정해준다. [입력size, 출력size]로 크기를 정해준다. 
출력 size는 one-hot의 크기와 같다. 

그리고 마지막으로 나온 outputs의 shape는 RNN’s output의 shape과 같다.  

그리고 그 output을 logits에 입력해주게 된다. 


기존에 activation function 이 들어있던 output을 쓰는 것을 잘못된 것이고, 그래서 softmax layer에서 나오는 (activation function이 없는) outputs를 사용하게 된다. 

위의 과정은 학습이 끝나고 모든 result들을 모아 출력한 것이다.

셰익스피어의 구절을 따라할 수 있다. 

소스코드또한 만들어낼 수 있다.


728x90
반응형