관리 메뉴

너와 나의 스토리

모두를 위한 딥러닝 - RNN 실습(3) 본문

Data Analysis/Machine learning

모두를 위한 딥러닝 - RNN 실습(3)

노는게제일좋아! 2019. 8. 7. 13:40
반응형

모두를 위한 딥러닝 ML lab12-3: Long Sequence RNN 강의 정리&코드

 

전체 코드: https://github.com/hunkim/DeepLearningZeroToAll/blob/master/lab-12-2-char-seq-rnn.py

 

 

1. data creation

# Data creation
idx2char = ['h', 'i', 'e', 'l', 'o']
# Teach hello: hihell -> ihello
x_data = [[0, 1, 0, 2, 3, 3]]   # hihell
x_one_hot = [[[1, 0, 0, 0, 0],   # h 0
              [0, 1, 0, 0, 0],   # i 1
              [1, 0, 0, 0, 0],   # h 0
              [0, 0, 1, 0, 0],   # e 2
              [0, 0, 0, 1, 0],   # l 3
              [0, 0, 0, 1, 0]]]  # l 3

이런식으로 직접 one_hot encoding을 하면 문자열이 길어질 때 힘들어진다.

 

Better data creation

자동으로 인코딩함

[:-1] : 처음부터 (마지막-1)까지

[1:] : 1부터 마지막까지

num_classes: indx2char의 크기와 똑같다

 

 

2. Hyper parameter

 

3. LSTM and Loss

 

4. Training and Results

x_data, y_data를 feed로 넘겨주면서 train 시키고, 그 때 마다 loss를 보면서 prediction함

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    for i in range(50):
        l, _ = sess.run([loss, train], feed_dict={X: x_data, Y: y_data})
        result = sess.run(prediction, feed_dict={X: x_data})

        # print char using dic
        result_str = [idx2char[c] for c in np.squeeze(result)]

        print(i, "loss:", l, "Prediction:", ''.join(result_str))

 

 

굉장히 긴 문자열이 들어오는 경우

 

1. dataset 쪼개기

0~169: dataset을 쪼개서 여러개의 batch를 만듦

 

2. RNN parameters

len(dataX): 169

반응형
Comments