이전 글에서 RNN으로 시계열 데이터나 문자열 데이터 등의 sequence data룰 학습한다는 것을 알았다. 또한 기본적인 RNN과 LSTM, GRU에 대해 알아보았다.
2020/07/03 - [공부/딥러닝] - CNN, RNN
TensorFlow 2.0의 텍스트 분류 예제에서 텍스트 전처리 과정과 Embedding Layer를 사용하는 법에 대해 공부했다.
2020/06/08 - [공부/딥러닝] - TensorFlow 2.0 basic practice 2
이번 시간에는 위의 RNN과 텍스트 분류 지식을 가지고 TensorFlow RNN 예제 코드를 살펴볼 것이다. 이 코드는 텍스트 데이터를 받아서 자동으로 비슷한 텍스트를 생성해주는 예제이다.
https://www.tensorflow.org/tutorials/text/text_generation
데이터 전처리 단계에서 우선 고유 문자를 정수로 맵핑한다. 그리고 tf.data.Dataset.from_tensor_slices를 사용하여 train example / target을 만든다. 전체 문자열을 batch 메서드를 사용하여 원하는 크기의 sequence로 구분할 수 있다. 이 sequence를 sample과 target으로 나누는 간단한 함수를 만들고 map 메서드로 복사 / 이동한다. 이후에는 embedding, LSTM, dense layer를 차례로 쌓아서 모델을 만든다. optimizer와 loss function을 붙인 뒤에 fitting 한다.
생성 단계에서는 범주형 분포를 이용하여 단어를 예측하고 다음 모델의 입력으로 전달하는 방식으로 텍스트를 생성한다. 생성할 문자열의 길이를 정하고 시작 문자열을 숫자로 벡터화한다. 그리고 모델 상태를 리셋한 뒤에 반복문으로 모델에 입력 문자열을 넣고 리턴 단어를 구한다. tf.random.categorical을 사용하여 모델의 리턴 단어를 예측하고 다음 모델의 새로운 입력 문자열로 사용하기 위해 입력 문자열을 업데이트한다. 변경된 문자열을 가지고 위의 과정을 반복하면서 예측 단어를 가지고 문자열을 생성하게 된다.
'데이터 사이언스 공부 > 딥러닝' 카테고리의 다른 글
CNN, RNN (0) | 2020.07.03 |
---|---|
ML Tip - Learning Rate, Overfitting, Regularization, Normalization, Standardization, Drop Out, Tensor Board (0) | 2020.06.26 |
Multinominal Logistic Regression, Softmax (0) | 2020.06.24 |
Logistic Regression, Binary Classification, Sigmoid (0) | 2020.06.16 |
TensorFlow 2.0 basic practice 2 (0) | 2020.06.08 |