Tensorflow

IMDB에 Bidirectional LSTM 모델 적용하기

카카오그래놀라 2020. 12. 17. 22:40

Bidirectional LSTM on IMDB

Author: fchollet
Date created: 2020/05/03
Last modified: 2020/05/03
Description: Train a 2-layer bidirectional LSTM on the IMDB movie review sentiment classification dataset.

- Keras

- Colab

- Github

 

라이브러리 로드

import numpy as np
from tensorflow import keras
from tensorflow.keras import layers

max_features = 20000  # 상위 20000개 단어들만을 사용하겠습니다.
maxlen = 200  # 영화 리뷰 중 처음 200단어까지만 사용하겠습니다.

 

Build the model

# 가변 길이의 정수형 시퀀스를 input으로 사용하겠습니다.
inputs = keras.Input(shape=(None,), dtype="int32")

# 각 정수형 시퀀스를 128차원으로 Embed 하겠습니다.
x = layers.Embedding(max_features, 128)(inputs)

# Bidirectional LSTM layer를 두 번 사용하겠습니다.
x = layers.Bidirectional(layers.LSTM(64, return_sequences=True))(x)
x = layers.Bidirectional(layers.LSTM(64))(x)

# 이진 분류를 하겠습니다.
outputs = layers.Dense(1, activation="sigmoid")(x)
model = keras.Model(inputs, outputs)
model.summary()

 

IMDB 영화 리뷰 감정 데이터를 불러오겠습니다.

(x_train, y_train), (x_val, y_val) = keras.datasets.imdb.load_data(
    num_words=max_features
)
print(len(x_train), "Training sequences")
print(len(x_val), "Validation sequences")
x_train = keras.preprocessing.sequence.pad_sequences(x_train, maxlen=maxlen)
x_val = keras.preprocessing.sequence.pad_sequences(x_val, maxlen=maxlen)

 

Train and evaluate the model

model.compile("adam", "binary_crossentropy", metrics=["accuracy"])
model.fit(x_train, y_train, batch_size=32, epochs=2, validation_data=(x_val, y_val))