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])
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.