for new ver
Browse files
train.py
DELETED
|
@@ -1,75 +0,0 @@
|
|
| 1 |
-
import tensorflow as tf
|
| 2 |
-
from tensorflow import keras
|
| 3 |
-
import numpy as np
|
| 4 |
-
from keras import layers
|
| 5 |
-
|
| 6 |
-
# ๊ฐ์ฅ ๋น๋๊ฐ ๋์ 1๋ง๊ฐ ๋จ์ด๋ง ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ์
๋ก๋
|
| 7 |
-
(x_train, y_train), (x_test, y_test) = keras.datasets.imdb.load_data(num_words=10000)
|
| 8 |
-
|
| 9 |
-
print(f"ํจ๋ฉ ์ ์ฒซ ๋ฒ์งธ ๋ฆฌ๋ทฐ ๊ธธ์ด: {len(x_train[0])}")
|
| 10 |
-
|
| 11 |
-
# ๋ชจ๋ ์ํ์ค์ ๊ธธ์ด๋ฅผ 256์ผ๋ก ํต์ผ
|
| 12 |
-
# maxlen๋ณด๋ค ๊ธธ๋ฉด ์๋ผ๋ด๊ณ , ์งง์ผ๋ฉด ์๋ถ๋ถ์ 0์ผ๋ก ์ฑ์ (pre-padding)
|
| 13 |
-
x_train = keras.preprocessing.sequence.pad_sequences(x_train, maxlen=256)
|
| 14 |
-
x_test = keras.preprocessing.sequence.pad_sequences(x_test, maxlen=256)
|
| 15 |
-
|
| 16 |
-
print(f"ํจ๋ฉ ํ ์ฒซ ๋ฒ์งธ ๋ฆฌ๋ทฐ ๊ธธ์ด: {len(x_train[0])}")
|
| 17 |
-
|
| 18 |
-
# ๋ชจ๋ธ ์ํคํ
์ฒ ์ ์
|
| 19 |
-
model = keras.Sequential([
|
| 20 |
-
# 1. ๋จ์ด ์๋ฒ ๋ฉ ์ธต
|
| 21 |
-
# input_dim: ์ ์ฒด ๋จ์ด ์งํฉ์ ํฌ๊ธฐ (๊ฐ์ฅ ๋น๋ฒํ 1๋ง๊ฐ ๋จ์ด)
|
| 22 |
-
# output_dim: ๊ฐ ๋จ์ด๋ฅผ ํํํ ๋ฒกํฐ์ ์ฐจ์ (32์ฐจ์)
|
| 23 |
-
keras.layers.Embedding(input_dim=10000, output_dim=32),
|
| 24 |
-
|
| 25 |
-
# 2. RNN ์ธต
|
| 26 |
-
# units: ์๋ ์ํ ๋ฒกํฐ์ ์ฐจ์ (32์ฐจ์)
|
| 27 |
-
keras.layers.SimpleRNN(32),
|
| 28 |
-
|
| 29 |
-
# 3. ์ต์ข
๋ถ๋ฅ๊ธฐ(Classifier)
|
| 30 |
-
# units: ์ถ๋ ฅ ๋ด๋ฐ์ ์ (๊ธ์ /๋ถ์ 1๊ฐ)
|
| 31 |
-
# activation: ์ถ๋ ฅ ๊ฐ์ 0~1 ์ฌ์ด ํ๋ฅ ๋ก ๋ณํ (์ด์ง ๋ถ๋ฅ)
|
| 32 |
-
keras.layers.Dense(1, activation="sigmoid"),
|
| 33 |
-
])
|
| 34 |
-
|
| 35 |
-
# ๋ชจ๋ธ ๊ตฌ์กฐ ์์ฝ ์ถ๋ ฅ
|
| 36 |
-
model.summary()
|
| 37 |
-
|
| 38 |
-
model.compile(
|
| 39 |
-
# ์์ค ํจ์: ์์ธก์ด ์ ๋ต๊ณผ ์ผ๋ง๋ ๋ค๋ฅธ์ง ์ธก์ .
|
| 40 |
-
# ์ด์ง ๋ถ๋ฅ(0 ๋๋ 1) ๋ฌธ์ ์ด๋ฏ๋ก binary_crossentropy๊ฐ ๊ฐ์ฅ ์ ํฉ.
|
| 41 |
-
loss="binary_crossentropy",
|
| 42 |
-
|
| 43 |
-
# ์ตํฐ๋ง์ด์ : ์์ค์ ์ต์ํํ๊ธฐ ์ํด ๋ชจ๋ธ์ ๊ฐ์ค์น๋ฅผ ์
๋ฐ์ดํธํ๋ ์๊ณ ๋ฆฌ์ฆ.
|
| 44 |
-
# Adam์ ํ์ฌ ๊ฐ์ฅ ๋๋ฆฌ ์ฐ์ด๊ณ ์ฑ๋ฅ์ด ์ข์ ์ตํฐ๋ง์ด์ ์ค ํ๋.
|
| 45 |
-
optimizer="adam",
|
| 46 |
-
|
| 47 |
-
# ํ๊ฐ์งํ: ํ๋ จ ๊ณผ์ ์ ๋ชจ๋ํฐ๋งํ ์งํ. ์ ํ๋๋ฅผ ์ฌ์ฉ.
|
| 48 |
-
metrics=["accuracy"]
|
| 49 |
-
)
|
| 50 |
-
|
| 51 |
-
batch_size = 128
|
| 52 |
-
epochs = 10
|
| 53 |
-
|
| 54 |
-
# ๋ชจ๋ธ ํ์ต ์คํ
|
| 55 |
-
# validation_data๋ฅผ ์ง์ ํ์ฌ ๋งค ์ํฌํฌ๋ง๋ค ํ
์คํธ ๋ฐ์ดํฐ๋ก ์ฑ๋ฅ์ ๊ฒ์ฆ
|
| 56 |
-
history = model.fit(
|
| 57 |
-
x_train, y_train,
|
| 58 |
-
batch_size=batch_size,
|
| 59 |
-
epochs=epochs,
|
| 60 |
-
validation_data=(x_test, y_test)
|
| 61 |
-
)
|
| 62 |
-
|
| 63 |
-
# ํ์ต ์๋ฃ ํ ์ต์ข
์ฑ๋ฅ ํ๊ฐ
|
| 64 |
-
score = model.evaluate(x_test, y_test, verbose=0)
|
| 65 |
-
print(f"\nTest loss: {score[0]:.4f}")
|
| 66 |
-
print(f"Test accuracy: {score[1]:.4f}")
|
| 67 |
-
|
| 68 |
-
# ๋ชจ๋ธ์ ๊ตฌ์กฐ, ๊ฐ์ค์น, ํ์ต ์ค์ ์ ๋ชจ๋ '.keras' ํ์ผ ํ๋์ ์ ์ฅ
|
| 69 |
-
model.save("my_rnn_model_imdb.keras")
|
| 70 |
-
|
| 71 |
-
# ๋ชจ๋ธ ๊ตฌ์กฐ ์์ฝ ์ถ๋ ฅ
|
| 72 |
-
model.summary()
|
| 73 |
-
|
| 74 |
-
# ์ ์ฅ๋ ๋ชจ๋ธ ๋ถ๋ฌ์ค๊ธฐ
|
| 75 |
-
loaded_model = keras.models.load_model("my_rnn_model_imdb.keras")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|