File size: 2,865 Bytes
39c2220 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
import numpy as np
import tensorflow as tf
from tensorflow import keras
from keras import layers
print("TensorFlow ๋ฒ์ :", tf.__version__)
# 1. ๋ฐ์ดํฐ ๋ก๋ ๋ฐ ์ ์ฒ๋ฆฌ
print("\n1. ๋ฐ์ดํฐ ๋ก๋ ๋ฐ ์ ์ฒ๋ฆฌ๋ฅผ ์์ํฉ๋๋ค...")
# num_words=10000: ๊ฐ์ฅ ๋น๋๊ฐ ๋์ 1๋ง ๊ฐ์ ๋จ์ด๋ง ์ฌ์ฉ
(x_train, y_train), (x_test, y_test) = keras.datasets.imdb.load_data(num_words=10000)
print(f"ํ์ต ๋ฐ์ดํฐ ๊ฐ์: {len(x_train)}")
print(f"ํ
์คํธ ๋ฐ์ดํฐ ๊ฐ์: {len(x_test)}")
# ๋ฌธ์ฅ์ ๊ธธ์ด๋ฅผ ๋์ผํ๊ฒ ๋ง์ถ๊ธฐ ์ํด ํจ๋ฉ(padding) ์ฒ๋ฆฌ (maxlen=256)
x_train = keras.preprocessing.sequence.pad_sequences(x_train, maxlen=256)
x_test = keras.preprocessing.sequence.pad_sequences(x_test, maxlen=256)
print("๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋์์ต๋๋ค.")
# 2. LSTM ๋ชจ๋ธ ์์ฑ, ํ์ต ๋ฐ ์ ์ฅ
print("\n2. LSTM ๋ชจ๋ธ ํ์ต์ ์์ํฉ๋๋ค...")
# LSTM ๋ชจ๋ธ ์ํคํ
์ฒ ์ ์
lstm_model = keras.Sequential([
layers.Embedding(input_dim=10000, output_dim=128),
layers.LSTM(64),
layers.Dense(1, activation="sigmoid")
])
# ๋ชจ๋ธ ์ปดํ์ผ
lstm_model.compile(
loss="binary_crossentropy",
optimizer="adam",
metrics=["accuracy"]
)
print("\n--- LSTM ๋ชจ๋ธ ๊ตฌ์กฐ ---")
lstm_model.summary()
# ๋ชจ๋ธ ํ์ต
batch_size = 128
epochs = 1 # ์์ ์ด๋ฏ๋ก epoch๋ฅผ ์ค์ฌ์ ์คํ ์๊ฐ์ ๋จ์ถํฉ๋๋ค.
history_lstm = lstm_model.fit(
x_train, y_train,
batch_size=batch_size,
epochs=epochs,
validation_data=(x_test, y_test)
)
# ๋ชจ๋ธ ํ๊ฐ
score_lstm = lstm_model.evaluate(x_test, y_test, verbose=0)
print(f"\nLSTM ๋ชจ๋ธ ํ
์คํธ ๊ฒฐ๊ณผ -> Loss: {score_lstm[0]:.4f}, Accuracy: {score_lstm[1]:.4f}\n")
# ํ์ต๋ LSTM ๋ชจ๋ธ ์ ์ฅ
lstm_model.save("lstm_model.keras")
print("LSTM ๋ชจ๋ธ์ด 'lstm_model.keras' ํ์ผ๋ก ์ ์ฅ๋์์ต๋๋ค.")
# 3. GRU ๋ชจ๋ธ ์์ฑ, ํ์ต ๋ฐ ์ ์ฅ
print("\n3. GRU ๋ชจ๋ธ ํ์ต์ ์์ํฉ๋๋ค...")
# GRU ๋ชจ๋ธ ์ํคํ
์ฒ ์ ์
gru_model = keras.Sequential([
layers.Embedding(input_dim=10000, output_dim=128),
layers.GRU(64),
layers.Dense(1, activation="sigmoid")
])
# ๋ชจ๋ธ ์ปดํ์ผ
gru_model.compile(
loss="binary_crossentropy",
optimizer="adam",
metrics=["accuracy"]
)
print("\n--- GRU ๋ชจ๋ธ ๊ตฌ์กฐ ---")
gru_model.summary()
# ๋ชจ๋ธ ํ์ต
history_gru = gru_model.fit(
x_train, y_train,
batch_size=batch_size,
epochs=epochs,
validation_data=(x_test, y_test)
)
# ๋ชจ๋ธ ํ๊ฐ
score_gru = gru_model.evaluate(x_test, y_test, verbose=0)
print(f"\nGRU ๋ชจ๋ธ ํ
์คํธ ๊ฒฐ๊ณผ -> Loss: {score_gru[0]:.4f}, Accuracy: {score_gru[1]:.4f}")
# ํ์ต๋ GRU ๋ชจ๋ธ ์ ์ฅ
gru_model.save("gru_model.keras")
print("GRU ๋ชจ๋ธ์ด 'gru_model.keras' ํ์ผ๋ก ์ ์ฅ๋์์ต๋๋ค.") |