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이 된다.
그리고 그 결과를 다시 펼쳐야 한다.
이렇게 하면 섞이지 않고 잘 펼쳐진다.
출력 size는 one-hot의 크기와 같다.
그리고 마지막으로 나온 outputs의 shape는 RNN’s output의 shape과 같다.
그리고 그 output을 logits에 입력해주게 된다.
기존에 activation function 이 들어있던 output을 쓰는 것을 잘못된 것이고, 그래서 softmax layer에서 나오는 (activation function이 없는) outputs를 사용하게 된다.
위의 과정은 학습이 끝나고 모든 result들을 모아 출력한 것이다.
셰익스피어의 구절을 따라할 수 있다.
소스코드또한 만들어낼 수 있다.
728x90
반응형