더북(TheBook)

7.8.2 양방향 RNN 구현

계속 IMDB 데이터셋을 사용한 예제를 살펴보겠습니다. IMDB 데이터셋을 사용하여 텐서플로 2로 코드를 작성합니다.

코드 7-24 모델을 생성하고 훈련

import numpy as np
from tensorflow.keras.preprocessing import sequence
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Embedding, LSTM, Bidirectional
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.datasets import imdb

n_unique_words = 10000
maxlen = 200
batch_size = 128

(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=n_unique_words)
x_train = sequence.pad_sequences(x_train, maxlen=maxlen) ------ 데이터 길이가 같지 않을 때 일정한 길이로 맞추어 줍니다.
x_test = sequence.pad_sequences(x_test, maxlen=maxlen)
y_train = np.array(y_train) ------ y_train을 배열로 생성
y_test = np.array(y_test)

model = Sequential()
model.add(Embedding(n_unique_words, 128, input_length=maxlen))
model.add(Bidirectional(LSTM(64))) ------ LSTM에 양방향 RNN을 적용
model.add(Dropout(0.5)) ------ 50%만 모델에 반영
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

model.fit(x_train, y_train,
          batch_size=batch_size,
          epochs=4,
          validation_data=[x_test, y_test])
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.