|
|
import tensorflow as tf
|
|
|
from tensorflow import keras
|
|
|
import numpy as np
|
|
|
from keras import layers
|
|
|
|
|
|
|
|
|
(x_train, y_train), (x_test, y_test) = keras.datasets.imdb.load_data(num_words=10000)
|
|
|
|
|
|
print(f"패딩 전 첫 번째 리뷰 길이: {len(x_train[0])}")
|
|
|
|
|
|
|
|
|
|
|
|
x_train = keras.preprocessing.sequence.pad_sequences(x_train, maxlen=256)
|
|
|
x_test = keras.preprocessing.sequence.pad_sequences(x_test, maxlen=256)
|
|
|
|
|
|
print(f"패딩 후 첫 번째 리뷰 길이: {len(x_train[0])}")
|
|
|
|
|
|
|
|
|
model = keras.Sequential([
|
|
|
|
|
|
|
|
|
|
|
|
keras.layers.Embedding(input_dim=10000, output_dim=32),
|
|
|
|
|
|
|
|
|
|
|
|
keras.layers.SimpleRNN(32),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
keras.layers.Dense(1, activation="sigmoid"),
|
|
|
])
|
|
|
|
|
|
|
|
|
model.compile(
|
|
|
|
|
|
|
|
|
loss="binary_crossentropy",
|
|
|
|
|
|
|
|
|
|
|
|
optimizer="adam",
|
|
|
|
|
|
|
|
|
metrics=["accuracy"]
|
|
|
)
|
|
|
|
|
|
batch_size = 128
|
|
|
epochs = 10
|
|
|
|
|
|
|
|
|
|
|
|
history = model.fit(
|
|
|
x_train, y_train,
|
|
|
batch_size=batch_size,
|
|
|
epochs=epochs,
|
|
|
validation_data=(x_test, y_test)
|
|
|
)
|
|
|
|
|
|
|
|
|
score = model.evaluate(x_test, y_test, verbose=0)
|
|
|
print(f"\nTest loss: {score[0]:.4f}")
|
|
|
print(f"Test accuracy: {score[1]:.4f}")
|
|
|
|
|
|
|
|
|
model.save("my_rnn_model_imdb.keras")
|
|
|
|
|
|
|
|
|
model.summary()
|
|
|
|
|
|
|
|
|
loaded_model = keras.models.load_model("my_rnn_model_imdb.keras") |