블로그 이미지
윤영식
Application Architecter, Full Stacker, KnowHow Dispenser and Bike Rider

Publication

Statistics Graph

Recent Comment

RNN Basic 강좌를 정리한다. 






RNN Basic


cell단위로 다루어 Tensorfllow 코딩으로 OUTPUT이 다시 INPUT으로 들어오게 한다. 

- xxxRNNCell 의 output 사이즈를 정해주고 cell을 만든다. 

- cell을 dynamic_rnn에서 cell을 실제 구동시켜본다. 


cell 학습: BasicRNNCell, BasicLSTMCell등을 바꾸어 사용할 수 있다.








Cell 만들기 



문자를 one hot encoding 을 이용해 vector로 표현한다. 

- input dimenstion

- hidden size를 우리가 정하기 나름에 따라 정해질 수 있다. 

위 두가지는 cell을 만들 때 정의하는 것이다. 




Tensorflow로 표현한다. 

- BasicLSTMCell 사용

- outputs, states를 얻음 

hidden_size 2여서 값은 2개의 shape 가 나온다. 






Unfold 풀어놓기


이것을 풀어서 (unfold) 보자.

- sequence_length 5는 unfold 5개 한다는 것이다. 입력데이터의 모양에 따라 결정된다. 



Tensorflow에서 h, e, l, o에 대한 변수를 만들어 np.array([h, e, l, l, o]..)를 생성한다. dimenstion 2개인 5개 output이 나옴. 이것은 입력을 줄 때 어떤 Shape이 나오는지 출력해 본 것이다. 







Batch Size 만들기



문자를 다양하게 주어 (Batch Size)를 여러개 넣어서 만들어 본다. 




Tensorflow 코드 






Hi Hello Training 시키기


h를 입력하면 다음은 i 나옴을 학습시킨다. 




훈련시킬 단어: "hihello" 에서 Unqiue한 Vocabulary를 만든다. 문자열에 대해 index를 표현한다. 해당 index를 one hot encoding으로 변환한다.



여기서 다음을 정한다.

- 입력 차원

- Sequence 갯수

- 출력(hidden) 차원

- Batch size 정하기 




Creating NN Cell 


cell의 size는 출력값 5로 정한다. 

- rnn_cell.BasicRNNCell(rnn_size)

- rnn_cell.BasicLSTMCell(rnn_size)

- rnn_cell.GRUCell(rnn_size)




RNN Parameters


output from the LSTM : hidden_size = 5 

one-hot size : input_dim = 5

one sentence : batch_size = 1

/ihello/ == 6 : sequence_length = 6



Data Creation 




Feed to RNN


None은 batch가 많아도됨을 의미. cell을 만들고, batch_size주고, dynmaic_rnn을 호출한다. 


Cost: sequence_loss


얼마나 Output이 정확한가를 sequence_loss를 사용하여 예측을 해본다. 예측값이 얼마나 좋은지를 loss값으로 알 수 있다. 



모델을 만든다. 


지금은 output을 간단히 logits에 넣어서 사용한다. 실제는 이렇게 사용하진 않는다. 


Training을 시킨다. 





결과


prediction한 charactor에 대해 시간이 지날 수록 그 다음 문자에 대한 예측(prediction) 이 높아진다. 





참조


- 김성훈 교수님의 RNN Basic 강좌

- 김성훈 교수님의 RNN Training 강좌

- RNN Basic, LSTM 이해

'AI Deep Learning > NN by Sung Kim' 카테고리의 다른 글

[Reinforcement Learning] Q Network  (0) 2018.07.13
[Reinforcement Learning] 강화학습  (0) 2018.07.12
[RNN] Basic & Training 하기  (0) 2018.07.11
[RNN] Recurrent Neural Network 개념  (0) 2018.07.11
[CNN] Class, tf.layers, Ensemble  (0) 2018.07.11
[CNN] MNIST 99% 도전  (0) 2018.07.11
posted by peter yun 윤영식