{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "AlaMdWF26k2H" }, "source": [ "# LSTM과 GRU 셀" ] }, { "cell_type": "markdown", "metadata": { "id": "o_Csb7v96k2M" }, "source": [ "\n", " \n", "
\n", " 구글 코랩에서 실행하기\n", "
" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "id": "fJIx0dHbIAmO" }, "outputs": [], "source": [ "# 실행마다 동일한 결과를 얻기 위해 케라스에 랜덤 시드를 사용하고 텐서플로 연산을 결정적으로 만듭니다.\n", "import tensorflow as tf\n", "\n", "tf.keras.utils.set_random_seed(42)\n", "tf.config.experimental.enable_op_determinism()" ] }, { "cell_type": "markdown", "metadata": { "id": "KWi9yl0q6k2N" }, "source": [ "## LSTM 신경망 훈련하기" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "XL7x0NCx6k2N", "outputId": "e2841433-5550-46fd-d948-dd1939542cb7" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/imdb.npz\n", "17464789/17464789 [==============================] - 1s 0us/step\n" ] } ], "source": [ "from tensorflow.keras.datasets import imdb\n", "from sklearn.model_selection import train_test_split\n", "\n", "(train_input, train_target), (test_input, test_target) = imdb.load_data(\n", " num_words=500)\n", "\n", "train_input, val_input, train_target, val_target = train_test_split(\n", " train_input, train_target, test_size=0.2, random_state=42)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "id": "5bjJ14QJ6k2O" }, "outputs": [], "source": [ "from tensorflow.keras.preprocessing.sequence import pad_sequences\n", "\n", "train_seq = pad_sequences(train_input, maxlen=100)\n", "val_seq = pad_sequences(val_input, maxlen=100)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "uMlTD4zv6k2O", "outputId": "6c4ada2d-0e51-47b0-9162-d97f97e77035" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Model: \"sequential\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " embedding (Embedding) (None, 100, 16) 8000 \n", " \n", " lstm (LSTM) (None, 8) 800 \n", " \n", " dense (Dense) (None, 1) 9 \n", " \n", "=================================================================\n", "Total params: 8809 (34.41 KB)\n", "Trainable params: 8809 (34.41 KB)\n", "Non-trainable params: 0 (0.00 Byte)\n", "_________________________________________________________________\n" ] } ], "source": [ "from tensorflow import keras\n", "\n", "model = keras.Sequential()\n", "\n", "model.add(keras.layers.Embedding(500, 16, input_length=100))\n", "model.add(keras.layers.LSTM(8))\n", "model.add(keras.layers.Dense(1, activation='sigmoid'))\n", "\n", "model.summary()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "nCmqOkjI6k2P", "outputId": "3c2edebf-f182-4902-a367-156044f5e221" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Epoch 1/100\n", "313/313 [==============================] - 23s 39ms/step - loss: 0.6927 - accuracy: 0.5277 - val_loss: 0.6924 - val_accuracy: 0.5368\n", "Epoch 2/100\n", " 13/313 [>.............................] - ETA: 3s - loss: 0.6920 - accuracy: 0.5853" ] }, { "output_type": "stream", "name": "stderr", "text": [ "/usr/local/lib/python3.10/dist-packages/keras/src/engine/training.py:3079: UserWarning: You are saving your model as an HDF5 file via `model.save()`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')`.\n", " saving_api.save_model(\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "313/313 [==============================] - 5s 17ms/step - loss: 0.6916 - accuracy: 0.5677 - val_loss: 0.6911 - val_accuracy: 0.5668\n", "Epoch 3/100\n", "313/313 [==============================] - 6s 20ms/step - loss: 0.6896 - accuracy: 0.6011 - val_loss: 0.6883 - val_accuracy: 0.6062\n", "Epoch 4/100\n", "313/313 [==============================] - 5s 15ms/step - loss: 0.6842 - accuracy: 0.6363 - val_loss: 0.6792 - val_accuracy: 0.6618\n", "Epoch 5/100\n", "313/313 [==============================] - 4s 14ms/step - loss: 0.6589 - accuracy: 0.6827 - val_loss: 0.6277 - val_accuracy: 0.7076\n", "Epoch 6/100\n", "313/313 [==============================] - 6s 20ms/step - loss: 0.6084 - accuracy: 0.7135 - val_loss: 0.5964 - val_accuracy: 0.7114\n", "Epoch 7/100\n", "313/313 [==============================] - 5s 15ms/step - loss: 0.5834 - accuracy: 0.7280 - val_loss: 0.5746 - val_accuracy: 0.7330\n", "Epoch 8/100\n", "313/313 [==============================] - 5s 17ms/step - loss: 0.5617 - accuracy: 0.7452 - val_loss: 0.5553 - val_accuracy: 0.7452\n", "Epoch 9/100\n", "313/313 [==============================] - 5s 16ms/step - loss: 0.5421 - accuracy: 0.7560 - val_loss: 0.5375 - val_accuracy: 0.7578\n", "Epoch 10/100\n", "313/313 [==============================] - 4s 14ms/step - loss: 0.5248 - accuracy: 0.7675 - val_loss: 0.5226 - val_accuracy: 0.7646\n", "Epoch 11/100\n", "313/313 [==============================] - 5s 16ms/step - loss: 0.5089 - accuracy: 0.7749 - val_loss: 0.5087 - val_accuracy: 0.7740\n", "Epoch 12/100\n", "313/313 [==============================] - 6s 18ms/step - loss: 0.4946 - accuracy: 0.7822 - val_loss: 0.4974 - val_accuracy: 0.7750\n", "Epoch 13/100\n", "313/313 [==============================] - 5s 16ms/step - loss: 0.4822 - accuracy: 0.7883 - val_loss: 0.4860 - val_accuracy: 0.7860\n", "Epoch 14/100\n", "313/313 [==============================] - 6s 18ms/step - loss: 0.4706 - accuracy: 0.7948 - val_loss: 0.4763 - val_accuracy: 0.7866\n", "Epoch 15/100\n", "313/313 [==============================] - 5s 15ms/step - loss: 0.4605 - accuracy: 0.7986 - val_loss: 0.4776 - val_accuracy: 0.7790\n", "Epoch 16/100\n", "313/313 [==============================] - 5s 15ms/step - loss: 0.4518 - accuracy: 0.8043 - val_loss: 0.4627 - val_accuracy: 0.7866\n", "Epoch 17/100\n", "313/313 [==============================] - 5s 17ms/step - loss: 0.4438 - accuracy: 0.8074 - val_loss: 0.4557 - val_accuracy: 0.7920\n", "Epoch 18/100\n", "313/313 [==============================] - 5s 15ms/step - loss: 0.4376 - accuracy: 0.8080 - val_loss: 0.4491 - val_accuracy: 0.7932\n", "Epoch 19/100\n", "313/313 [==============================] - 6s 18ms/step - loss: 0.4320 - accuracy: 0.8108 - val_loss: 0.4467 - val_accuracy: 0.7942\n", "Epoch 20/100\n", "313/313 [==============================] - 6s 20ms/step - loss: 0.4278 - accuracy: 0.8116 - val_loss: 0.4420 - val_accuracy: 0.7982\n", "Epoch 21/100\n", "313/313 [==============================] - 4s 14ms/step - loss: 0.4246 - accuracy: 0.8116 - val_loss: 0.4392 - val_accuracy: 0.7986\n", "Epoch 22/100\n", "313/313 [==============================] - 5s 15ms/step - loss: 0.4220 - accuracy: 0.8141 - val_loss: 0.4414 - val_accuracy: 0.7982\n", "Epoch 23/100\n", "313/313 [==============================] - 5s 16ms/step - loss: 0.4198 - accuracy: 0.8146 - val_loss: 0.4356 - val_accuracy: 0.8000\n", "Epoch 24/100\n", "313/313 [==============================] - 4s 14ms/step - loss: 0.4175 - accuracy: 0.8149 - val_loss: 0.4367 - val_accuracy: 0.7986\n", "Epoch 25/100\n", "313/313 [==============================] - 5s 16ms/step - loss: 0.4161 - accuracy: 0.8140 - val_loss: 0.4334 - val_accuracy: 0.8000\n", "Epoch 26/100\n", "313/313 [==============================] - 5s 16ms/step - loss: 0.4143 - accuracy: 0.8163 - val_loss: 0.4328 - val_accuracy: 0.7990\n", "Epoch 27/100\n", "313/313 [==============================] - 5s 15ms/step - loss: 0.4131 - accuracy: 0.8158 - val_loss: 0.4314 - val_accuracy: 0.8000\n", "Epoch 28/100\n", "313/313 [==============================] - 5s 16ms/step - loss: 0.4120 - accuracy: 0.8150 - val_loss: 0.4326 - val_accuracy: 0.8002\n", "Epoch 29/100\n", "313/313 [==============================] - 5s 16ms/step - loss: 0.4106 - accuracy: 0.8156 - val_loss: 0.4333 - val_accuracy: 0.8034\n", "Epoch 30/100\n", "313/313 [==============================] - 4s 14ms/step - loss: 0.4092 - accuracy: 0.8170 - val_loss: 0.4315 - val_accuracy: 0.8010\n" ] } ], "source": [ "rmsprop = keras.optimizers.RMSprop(learning_rate=1e-4)\n", "model.compile(optimizer=rmsprop, loss='binary_crossentropy',\n", " metrics=['accuracy'])\n", "\n", "checkpoint_cb = keras.callbacks.ModelCheckpoint('best-lstm-model.h5',\n", " save_best_only=True)\n", "early_stopping_cb = keras.callbacks.EarlyStopping(patience=3,\n", " restore_best_weights=True)\n", "\n", "history = model.fit(train_seq, train_target, epochs=100, batch_size=64,\n", " validation_data=(val_seq, val_target),\n", " callbacks=[checkpoint_cb, early_stopping_cb])" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 449 }, "id": "Xl1bliNr6k2Q", "outputId": "8255d057-69d9-40d5-fcf1-c6a19f40b9d0" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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2YwbN46MjAy6dOnC3Llz3R2b09PTsVrP7ITVo48+SmFhIffccw9HjhzhoosuYu7cufj6+p7W6w3DANBdYiIiIvXI8b/bx/+On4rFON2WDcjevXt1h5iIiEg9tWfPHpo0aXLKdgpBlXA6nezfv5+goCAsFotHj52Xl0d8fDx79uwhODjYo8c+V+k7qx59b9Wj76169L2dOX1n1fNH35thGOTn5xMXF3daV5FMvxxWF1mt1tNKkGcjODhYP/ozpO+sevS9VY++t+rR93bm9J1VT1XfW0hIyGkfo16NEyQiIiLiKQpBIiIi0iApBNUyHx8fnnrqKQ3OeAb0nVWPvrfq0fdWPfrezpy+s+rx5PemjtEiIiLSIOlMkIiIiDRICkEiIiLSICkEiYiISIOkECQiIiINkkJQLZoyZQoJCQn4+vqSlJTEypUrzS6pTnv66aexWCwVlrZt25pdVp3z448/MmDAAOLi4rBYLHz++ecV9huGwbhx44iNjcXPz4+UlBS2b99uTrF1yKm+t2HDhp30++vXr585xdYREyZMoHv37gQFBREVFcWgQYPYunVrhTbFxcWMGjWKRo0aERgYyA033EBmZqZJFdcNp/O9XXbZZSf93u69916TKjbfG2+8QadOndwDIiYnJ/PNN9+493vqd6YQVEs++ugjRo8ezVNPPcWaNWvo3Lkzffv2JSsry+zS6rTzzjuPAwcOuJfFixebXVKdU1hYSOfOnZkyZUql+ydOnMjkyZOZOnUqK1asICAggL59+1JcXFzLldYtp/reAPr161fh9/fBBx/UYoV1z6JFixg1ahTLly/nu+++o6ysjD59+lBYWOhu89BDD/G///2PTz75hEWLFrF//36uv/56E6s23+l8bwAjRoyo8HubOHGiSRWbr0mTJrzwwgusXr2aVatWccUVVzBw4EA2bdoEePB3Zkit6NGjhzFq1Cj3c4fDYcTFxRkTJkwwsaq67amnnjI6d+5sdhn1CmB89tln7udOp9OIiYkxXnzxRfe2I0eOGD4+PsYHH3xgQoV10++/N8MwjDvuuMMYOHCgKfXUF1lZWQZgLFq0yDAM12/L29vb+OSTT9xtNm/ebADGsmXLzCqzzvn992YYhnHppZcaDzzwgHlF1QNhYWHGv//9b4/+znQmqBaUlpayevVqUlJS3NusVispKSksW7bMxMrqvu3b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\n" }, "metadata": {} } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "plt.plot(history.history['loss'])\n", "plt.plot(history.history['val_loss'])\n", "plt.xlabel('epoch')\n", "plt.ylabel('loss')\n", "plt.legend(['train', 'val'])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "ob79h7Kc6k2Q" }, "source": [ "## 순환 층에 드롭아웃 적용하기" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "id": "Fr0DUR-Y6k2R" }, "outputs": [], "source": [ "model2 = keras.Sequential()\n", "\n", "model2.add(keras.layers.Embedding(500, 16, input_length=100))\n", "model2.add(keras.layers.LSTM(8, dropout=0.3))\n", "model2.add(keras.layers.Dense(1, activation='sigmoid'))" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "Ap8XxUO46k2R", "outputId": "2492aea8-5ef8-402d-a4d6-adb3a8ae77f3" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Epoch 1/100\n", "313/313 [==============================] - 14s 30ms/step - loss: 0.6924 - accuracy: 0.5317 - val_loss: 0.6917 - val_accuracy: 0.5696\n", "Epoch 2/100\n", "313/313 [==============================] - 6s 19ms/step - loss: 0.6907 - accuracy: 0.5788 - val_loss: 0.6897 - val_accuracy: 0.5984\n", "Epoch 3/100\n", "313/313 [==============================] - 5s 16ms/step - loss: 0.6879 - accuracy: 0.6057 - val_loss: 0.6861 - val_accuracy: 0.6232\n", "Epoch 4/100\n", "313/313 [==============================] - 5s 15ms/step - loss: 0.6826 - accuracy: 0.6251 - val_loss: 0.6787 - val_accuracy: 0.6392\n", "Epoch 5/100\n", "313/313 [==============================] - 5s 17ms/step - loss: 0.6674 - accuracy: 0.6511 - val_loss: 0.6529 - val_accuracy: 0.6630\n", "Epoch 6/100\n", "313/313 [==============================] - 5s 15ms/step - loss: 0.6258 - accuracy: 0.6999 - val_loss: 0.6108 - val_accuracy: 0.7108\n", "Epoch 7/100\n", "313/313 [==============================] - 5s 17ms/step - loss: 0.5967 - accuracy: 0.7250 - val_loss: 0.5894 - val_accuracy: 0.7274\n", "Epoch 8/100\n", "313/313 [==============================] - 5s 17ms/step - loss: 0.5771 - accuracy: 0.7402 - val_loss: 0.5723 - val_accuracy: 0.7396\n", "Epoch 9/100\n", "313/313 [==============================] - 5s 14ms/step - loss: 0.5599 - accuracy: 0.7513 - val_loss: 0.5534 - val_accuracy: 0.7522\n", "Epoch 10/100\n", "313/313 [==============================] - 5s 17ms/step - loss: 0.5442 - accuracy: 0.7606 - val_loss: 0.5381 - val_accuracy: 0.7640\n", "Epoch 11/100\n", "313/313 [==============================] - 5s 15ms/step - loss: 0.5293 - accuracy: 0.7683 - val_loss: 0.5235 - val_accuracy: 0.7690\n", "Epoch 12/100\n", "313/313 [==============================] - 5s 15ms/step - loss: 0.5166 - accuracy: 0.7732 - val_loss: 0.5114 - val_accuracy: 0.7700\n", "Epoch 13/100\n", "313/313 [==============================] - 5s 16ms/step - loss: 0.5052 - accuracy: 0.7791 - val_loss: 0.5009 - val_accuracy: 0.7844\n", "Epoch 14/100\n", "313/313 [==============================] - 5s 15ms/step - loss: 0.4928 - accuracy: 0.7819 - val_loss: 0.4905 - val_accuracy: 0.7852\n", "Epoch 15/100\n", "313/313 [==============================] - 6s 19ms/step - loss: 0.4837 - accuracy: 0.7881 - val_loss: 0.4857 - val_accuracy: 0.7782\n", "Epoch 16/100\n", "313/313 [==============================] - 5s 17ms/step - loss: 0.4753 - accuracy: 0.7911 - val_loss: 0.4750 - val_accuracy: 0.7890\n", "Epoch 17/100\n", "313/313 [==============================] - 4s 14ms/step - loss: 0.4669 - accuracy: 0.7939 - val_loss: 0.4688 - val_accuracy: 0.7916\n", "Epoch 18/100\n", "313/313 [==============================] - 4s 14ms/step - loss: 0.4599 - accuracy: 0.7969 - val_loss: 0.4637 - val_accuracy: 0.7898\n", "Epoch 19/100\n", "313/313 [==============================] - 5s 17ms/step - loss: 0.4538 - accuracy: 0.7991 - val_loss: 0.4582 - val_accuracy: 0.7918\n", "Epoch 20/100\n", "313/313 [==============================] - 4s 14ms/step - loss: 0.4504 - accuracy: 0.7995 - val_loss: 0.4541 - val_accuracy: 0.7952\n", "Epoch 21/100\n", "313/313 [==============================] - 5s 15ms/step - loss: 0.4468 - accuracy: 0.8002 - val_loss: 0.4514 - val_accuracy: 0.7942\n", "Epoch 22/100\n", "313/313 [==============================] - 7s 23ms/step - loss: 0.4440 - accuracy: 0.8015 - val_loss: 0.4500 - val_accuracy: 0.7952\n", "Epoch 23/100\n", "313/313 [==============================] - 4s 14ms/step - loss: 0.4414 - accuracy: 0.8028 - val_loss: 0.4478 - val_accuracy: 0.7942\n", "Epoch 24/100\n", "313/313 [==============================] - 4s 14ms/step - loss: 0.4390 - accuracy: 0.8008 - val_loss: 0.4482 - val_accuracy: 0.7948\n", "Epoch 25/100\n", "313/313 [==============================] - 5s 17ms/step - loss: 0.4371 - accuracy: 0.8021 - val_loss: 0.4450 - val_accuracy: 0.7960\n", "Epoch 26/100\n", "313/313 [==============================] - 4s 14ms/step - loss: 0.4352 - accuracy: 0.8040 - val_loss: 0.4442 - val_accuracy: 0.7998\n", "Epoch 27/100\n", "313/313 [==============================] - 5s 15ms/step - loss: 0.4324 - accuracy: 0.8061 - val_loss: 0.4417 - val_accuracy: 0.7974\n", "Epoch 28/100\n", "313/313 [==============================] - 6s 18ms/step - loss: 0.4325 - accuracy: 0.8048 - val_loss: 0.4414 - val_accuracy: 0.7976\n", "Epoch 29/100\n", "313/313 [==============================] - 4s 14ms/step - loss: 0.4299 - accuracy: 0.8065 - val_loss: 0.4431 - val_accuracy: 0.7990\n", "Epoch 30/100\n", "313/313 [==============================] - 5s 16ms/step - loss: 0.4293 - accuracy: 0.8058 - val_loss: 0.4400 - val_accuracy: 0.7984\n", "Epoch 31/100\n", "313/313 [==============================] - 5s 16ms/step - loss: 0.4276 - accuracy: 0.8077 - val_loss: 0.4421 - val_accuracy: 0.7936\n", "Epoch 32/100\n", "313/313 [==============================] - 4s 14ms/step - loss: 0.4258 - accuracy: 0.8087 - val_loss: 0.4384 - val_accuracy: 0.7978\n", "Epoch 33/100\n", "313/313 [==============================] - 5s 16ms/step - loss: 0.4255 - accuracy: 0.8073 - val_loss: 0.4382 - val_accuracy: 0.8018\n", "Epoch 34/100\n", "313/313 [==============================] - 5s 17ms/step - loss: 0.4244 - accuracy: 0.8074 - val_loss: 0.4375 - val_accuracy: 0.8026\n", "Epoch 35/100\n", "313/313 [==============================] - 5s 14ms/step - loss: 0.4247 - accuracy: 0.8068 - val_loss: 0.4369 - val_accuracy: 0.8034\n", "Epoch 36/100\n", "313/313 [==============================] - 5s 17ms/step - loss: 0.4223 - accuracy: 0.8102 - val_loss: 0.4357 - val_accuracy: 0.7988\n", "Epoch 37/100\n", "313/313 [==============================] - 5s 15ms/step - loss: 0.4238 - accuracy: 0.8077 - val_loss: 0.4401 - val_accuracy: 0.8006\n", "Epoch 38/100\n", "313/313 [==============================] - 4s 14ms/step - loss: 0.4199 - accuracy: 0.8087 - val_loss: 0.4349 - val_accuracy: 0.8016\n", "Epoch 39/100\n", "313/313 [==============================] - 5s 16ms/step - loss: 0.4214 - accuracy: 0.8091 - val_loss: 0.4339 - val_accuracy: 0.8018\n", "Epoch 40/100\n", "313/313 [==============================] - 5s 15ms/step - loss: 0.4215 - accuracy: 0.8102 - val_loss: 0.4375 - val_accuracy: 0.7934\n", "Epoch 41/100\n", "313/313 [==============================] - 4s 14ms/step - loss: 0.4203 - accuracy: 0.8094 - val_loss: 0.4332 - val_accuracy: 0.8018\n", "Epoch 42/100\n", "313/313 [==============================] - 6s 18ms/step - loss: 0.4176 - accuracy: 0.8083 - val_loss: 0.4341 - val_accuracy: 0.8046\n", "Epoch 43/100\n", "313/313 [==============================] - 4s 14ms/step - loss: 0.4189 - accuracy: 0.8105 - val_loss: 0.4345 - val_accuracy: 0.7974\n", "Epoch 44/100\n", "313/313 [==============================] - 4s 14ms/step - loss: 0.4178 - accuracy: 0.8117 - val_loss: 0.4335 - val_accuracy: 0.8038\n" ] } ], "source": [ "rmsprop = keras.optimizers.RMSprop(learning_rate=1e-4)\n", "model2.compile(optimizer=rmsprop, loss='binary_crossentropy',\n", " metrics=['accuracy'])\n", "\n", "checkpoint_cb = keras.callbacks.ModelCheckpoint('best-dropout-model.h5',\n", " save_best_only=True)\n", "early_stopping_cb = keras.callbacks.EarlyStopping(patience=3,\n", " restore_best_weights=True)\n", "\n", "history = model2.fit(train_seq, train_target, epochs=100, batch_size=64,\n", " validation_data=(val_seq, val_target),\n", " callbacks=[checkpoint_cb, early_stopping_cb])" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 449 }, "id": "Qzwsp3pl6k2R", "outputId": "09e95dd5-8dd3-4c56-bc3d-09dca9599769" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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wgsZOXKke9+Tvyd1gdWR8ePHc8cdd3DhhRfSq1cvpkyZQmFhIXfeeafZpXmkgoICduzY4X6elpbGunXrCA8Pp2nTpjz44INMmjSJ1q1b07x5c5588kni4+MZPny4eUV7mHHjxvHBBx/w5ZdfEhQU5B6TEBISgp+fHyEhIdx1112MHz+e8PBwgoODuf/++0lOTuaiiy4yufrGb8KECVx11VU0bdqU/Px8PvjgA3744Qe+++47fTf1RFBQkHvM3HEBAQFERES4j3v092T2bWie5PXXX3c1bdrU5ePj4+rVq5drxYoVZpfksRYvXuwCTtnuuOMOl8tl3Ar/5JNPumJiYlx2u901YMAAV0pKirlFe5jTfT+A691333WfU1xc7Przn//sCgsLc/n7+7uuu+4614EDB8wr2oOMGTPG1axZM5ePj48rKirKNWDAANf8+fPdr+u7qZ9Ovg3e5fLs78nicrlcJmUvEREREVNoDJCIiIh4HAUgERER8TgKQCIiIuJxFIBERETE4ygAiYiIiMdRABIRERGPowAkIiIiHkcBSERERDyOApCISBX88MMPWCyWUxaOFJGGSQFIREREPI4CkIiIiHgcBSARaRCcTieTJ0+mefPm+Pn50bVrV2bPng2c6J6aO3cuXbp0wdfXl4suuohNmzZVusZnn31Gx44dsdvtJCUl8corr1R6vbS0lL/85S8kJiZit9tp1aoV77zzTqVz1qxZw4UXXoi/vz99+vQhJSXl/H5wETkvFIBEpEGYPHky77//PjNmzGDz5s089NBD3H777SxZssR9zqOPPsorr7zCL7/8QlRUFEOHDqW8vBwwgsvNN9/MLbfcwsaNG3n66ad58sknmTVrlvv9o0aN4sMPP2Tq1Kls3bqVN998k8DAwEp1PPHEE7zyyiusXr0aLy8vxowZUyefX0Rql1aDF5F6r7S0lPDwcBYuXEhycrL7+N13301RURH33nsvl112GR999BEjRowA4MiRIzRp0oRZs2Zx8803M3LkSA4ePMj8+fPd73/ssceYO3cumzdvJjU1lbZt27JgwQIGDhx4Sg0//PADl112GQsXLmTAgAEAfPPNN1x99dUUFxfj6+t7nv8URKQ2qQVIROq9HTt2UFRUxKBBgwgMDHRv77//Pjt37nSfd3I4Cg8Pp23btmzduhWArVu30rdv30rX7du3L9u3b8fhcLBu3TpsNhv9+/c/ay1dunRx78fFxQGQnZ1d488oInXLy+wCRER+T0FBAQBz584lISGh0mt2u71SCKouPz+/Kp3n7e3t3rdYLIAxPklEGha1AIlIvdehQwfsdjvp6em0atWq0paYmOg+b8WKFe79o0ePkpqaSvv27QFo3749S5curXTdpUuX0qZNG2w2G507d8bpdFYaUyQijZdagESk3gsKCuKRRx7hoYcewul00q9fP3Jzc1m6dCnBwcE0a9YMgGeffZaIiAhiYmJ44okniIyMZPjw4QA8/PDD9OzZk+eee44RI0awfPlypk2bxr/+9S8AkpKSuOOOOxgzZgxTp06la9eu7Nmzh+zsbG6++WazPrqInCcKQCLSIDz33HNERUUxefJkdu3aRWhoKN27d+evf/2ruwvqhRde4IEHHmD79u1069aNr7/+Gh8fHwC6d+/OJ598wsSJE3nuueeIi4vj2WefZfTo0e6f8cYbb/DXv/6VP//5zxw+fJimTZvy17/+1YyPKyLnme4CE5EG7/gdWkePHiU0NNTsckSkAdAYIBEREfE4CkAiIiLicdQFJiIiIh5HLUAiIiLicRSARERExOMoAImIiIjHUQASERERj6MAJCIiIh5HAUhEREQ8jgKQiIiIeBwFIBEREfE4/x/EQIyPc+CsFgAAAABJRU5ErkJggg==\n" }, "metadata": {} } ], "source": [ "plt.plot(history.history['loss'])\n", "plt.plot(history.history['val_loss'])\n", "plt.xlabel('epoch')\n", "plt.ylabel('loss')\n", "plt.legend(['train', 'val'])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "DKtQByM96k2S" }, "source": [ "## 2개의 층을 연결하기" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "YkQboCpD6k2S", "outputId": "89d007a4-6b72-4c0d-c4c9-10a5e5d0bd1d" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Model: \"sequential_2\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " embedding_2 (Embedding) (None, 100, 16) 8000 \n", " \n", " lstm_2 (LSTM) (None, 100, 8) 800 \n", " \n", " lstm_3 (LSTM) (None, 8) 544 \n", " \n", " dense_2 (Dense) (None, 1) 9 \n", " \n", "=================================================================\n", "Total params: 9353 (36.54 KB)\n", "Trainable params: 9353 (36.54 KB)\n", "Non-trainable params: 0 (0.00 Byte)\n", "_________________________________________________________________\n" ] } ], "source": [ "model3 = keras.Sequential()\n", "\n", "model3.add(keras.layers.Embedding(500, 16, input_length=100))\n", "model3.add(keras.layers.LSTM(8, dropout=0.3, return_sequences=True))\n", "model3.add(keras.layers.LSTM(8, dropout=0.3))\n", "model3.add(keras.layers.Dense(1, activation='sigmoid'))\n", "\n", "model3.summary()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "hDk_ffAo6k2S", "outputId": "a4304a6d-17eb-4957-96ab-00f3d0ec8e49" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Epoch 1/100\n", "313/313 [==============================] - 16s 37ms/step - loss: 0.6929 - accuracy: 0.5168 - val_loss: 0.6927 - val_accuracy: 0.5280\n", "Epoch 2/100\n", "313/313 [==============================] - 6s 20ms/step - loss: 0.6914 - accuracy: 0.5788 - val_loss: 0.6893 - val_accuracy: 0.6228\n", "Epoch 3/100\n", "313/313 [==============================] - 7s 24ms/step - loss: 0.6750 - accuracy: 0.6473 - val_loss: 0.6432 - val_accuracy: 0.6782\n", "Epoch 4/100\n", "313/313 [==============================] - 7s 23ms/step - loss: 0.6067 - accuracy: 0.6889 - val_loss: 0.5798 - val_accuracy: 0.7046\n", "Epoch 5/100\n", "313/313 [==============================] - 6s 20ms/step - loss: 0.5611 - accuracy: 0.7233 - val_loss: 0.5406 - val_accuracy: 0.7358\n", "Epoch 6/100\n", "313/313 [==============================] - 7s 21ms/step - loss: 0.5311 - accuracy: 0.7439 - val_loss: 0.5173 - val_accuracy: 0.7542\n", "Epoch 7/100\n", "313/313 [==============================] - 6s 20ms/step - loss: 0.5142 - accuracy: 0.7568 - val_loss: 0.5006 - val_accuracy: 0.7670\n", "Epoch 8/100\n", "313/313 [==============================] - 8s 24ms/step - loss: 0.4986 - accuracy: 0.7653 - val_loss: 0.4950 - val_accuracy: 0.7680\n", "Epoch 9/100\n", "313/313 [==============================] - 7s 21ms/step - loss: 0.4860 - accuracy: 0.7739 - val_loss: 0.4806 - val_accuracy: 0.7778\n", "Epoch 10/100\n", "313/313 [==============================] - 7s 22ms/step - loss: 0.4782 - accuracy: 0.7804 - val_loss: 0.4716 - val_accuracy: 0.7838\n", "Epoch 11/100\n", "313/313 [==============================] - 6s 19ms/step - loss: 0.4717 - accuracy: 0.7793 - val_loss: 0.4670 - val_accuracy: 0.7842\n", "Epoch 12/100\n", "313/313 [==============================] - 7s 22ms/step - loss: 0.4669 - accuracy: 0.7839 - val_loss: 0.4628 - val_accuracy: 0.7850\n", "Epoch 13/100\n", "313/313 [==============================] - 6s 18ms/step - loss: 0.4599 - accuracy: 0.7875 - val_loss: 0.4589 - val_accuracy: 0.7896\n", "Epoch 14/100\n", "313/313 [==============================] - 7s 22ms/step - loss: 0.4566 - accuracy: 0.7892 - val_loss: 0.4575 - val_accuracy: 0.7864\n", "Epoch 15/100\n", "313/313 [==============================] - 6s 20ms/step - loss: 0.4520 - accuracy: 0.7928 - val_loss: 0.4676 - val_accuracy: 0.7814\n", "Epoch 16/100\n", "313/313 [==============================] - 7s 21ms/step - loss: 0.4506 - accuracy: 0.7913 - val_loss: 0.4557 - val_accuracy: 0.7878\n", "Epoch 17/100\n", "313/313 [==============================] - 6s 19ms/step - loss: 0.4492 - accuracy: 0.7930 - val_loss: 0.4538 - val_accuracy: 0.7876\n", "Epoch 18/100\n", "313/313 [==============================] - 6s 19ms/step - loss: 0.4460 - accuracy: 0.7958 - val_loss: 0.4477 - val_accuracy: 0.7942\n", "Epoch 19/100\n", "313/313 [==============================] - 6s 20ms/step - loss: 0.4446 - accuracy: 0.7962 - val_loss: 0.4477 - val_accuracy: 0.7932\n", "Epoch 20/100\n", "313/313 [==============================] - 6s 18ms/step - loss: 0.4403 - accuracy: 0.7969 - val_loss: 0.4451 - val_accuracy: 0.7952\n", "Epoch 21/100\n", "313/313 [==============================] - 7s 23ms/step - loss: 0.4405 - accuracy: 0.7970 - val_loss: 0.4439 - val_accuracy: 0.7940\n", "Epoch 22/100\n", "313/313 [==============================] - 6s 18ms/step - loss: 0.4382 - accuracy: 0.7983 - val_loss: 0.4471 - val_accuracy: 0.7950\n", "Epoch 23/100\n", "313/313 [==============================] - 7s 22ms/step - loss: 0.4367 - accuracy: 0.8008 - val_loss: 0.4430 - val_accuracy: 0.7932\n", "Epoch 24/100\n", "313/313 [==============================] - 6s 18ms/step - loss: 0.4350 - accuracy: 0.8009 - val_loss: 0.4456 - val_accuracy: 0.7908\n", "Epoch 25/100\n", "313/313 [==============================] - 7s 21ms/step - loss: 0.4353 - accuracy: 0.8008 - val_loss: 0.4414 - val_accuracy: 0.7936\n", "Epoch 26/100\n", "313/313 [==============================] - 6s 19ms/step - loss: 0.4335 - accuracy: 0.7994 - val_loss: 0.4426 - val_accuracy: 0.7892\n", "Epoch 27/100\n", "313/313 [==============================] - 6s 20ms/step - loss: 0.4313 - accuracy: 0.8015 - val_loss: 0.4407 - val_accuracy: 0.7932\n", "Epoch 28/100\n", "313/313 [==============================] - 6s 21ms/step - loss: 0.4313 - accuracy: 0.8003 - val_loss: 0.4401 - val_accuracy: 0.7932\n", "Epoch 29/100\n", "313/313 [==============================] - 6s 18ms/step - loss: 0.4312 - accuracy: 0.8038 - val_loss: 0.4453 - val_accuracy: 0.7968\n", "Epoch 30/100\n", "313/313 [==============================] - 7s 22ms/step - loss: 0.4296 - accuracy: 0.8054 - val_loss: 0.4393 - val_accuracy: 0.7938\n", "Epoch 31/100\n", "313/313 [==============================] - 6s 18ms/step - loss: 0.4296 - accuracy: 0.8038 - val_loss: 0.4470 - val_accuracy: 0.7890\n", "Epoch 32/100\n", "313/313 [==============================] - 7s 21ms/step - loss: 0.4270 - accuracy: 0.8030 - val_loss: 0.4395 - val_accuracy: 0.7910\n", "Epoch 33/100\n", "313/313 [==============================] - 6s 19ms/step - loss: 0.4283 - accuracy: 0.8027 - val_loss: 0.4434 - val_accuracy: 0.7984\n" ] } ], "source": [ "rmsprop = keras.optimizers.RMSprop(learning_rate=1e-4)\n", "model3.compile(optimizer=rmsprop, loss='binary_crossentropy',\n", " metrics=['accuracy'])\n", "\n", "checkpoint_cb = keras.callbacks.ModelCheckpoint('best-2rnn-model.h5',\n", " save_best_only=True)\n", "early_stopping_cb = keras.callbacks.EarlyStopping(patience=3,\n", " restore_best_weights=True)\n", "\n", "history = model3.fit(train_seq, train_target, epochs=100, batch_size=64,\n", " validation_data=(val_seq, val_target),\n", " callbacks=[checkpoint_cb, early_stopping_cb])" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 449 }, "id": "1paBqczf6k2S", "outputId": "c0f88192-feaa-46fd-c0d7-396ff54685f5" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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yIC4EHy92s7SJwpATaQAJCIirV1phZ20HHMSSjMcFXOsoIxT229OvztmOeXoqceOF5Xz0+FcSitqLpjr42VlcOcQZyAa1iWs0VMIGIbBieIKjuaWcPhECUdzqx55JRzJLeWmEfFMGt7lbN92gzQTtIiISDvn522jV1QHekV1aJbrlVc62JGez4aDOfxwMIcNB09wvKicHw6e4IeDJ3i16rzeUR04P6EjwxPC6BPTgZzCco7klnA0t/SUgGOGndMD1anO79qxWeo+V2oBqoNagERExNMZhsGB7CI2HDzBhlQzENU3Wq4hER18iQ31Jy7Uj9gQf2JDzUef6A4khNdecqUp1AIkIiIiTWKxWMy12yKC+OXweACyC8vMQHQwhw2pJ9h/rPCUgHMy3MSG+hEX6k90iF+r7UOkACQiIiKNEh7ky7gB0YwbEO3uUprM6u4CRERERFxNAUhEREQ8jgKQiIiIeBwFIBEREfE4CkAiIiLicRSARERExOMoAImIiIjHUQASERERj6MAJCIiIh5HAUhEREQ8jgKQiIiIeBwFIBEREfE4CkAiIiLicRSARERExON4ubuA1sgwDADy8/PdXImIiIg0VvXf7eq/4w1RAKpDQUEBAPHx8W6uRERERM5WQUEBISEhDZ5jMRoTkzyMw+Hg6NGjdOjQAYvF0qzXzs/PJz4+nkOHDhEcHNys127L9LnUTZ9L/fTZ1E2fS/302dStPX0uhmFQUFBAbGwsVmvDvXzUAlQHq9VK586dW/R3BAcHt/kvWkvQ51I3fS7102dTN30u9dNnU7f28rmcqeWnmjpBi4iIiMdRABIRERGPowDkYr6+vjz++OP4+vq6u5RWRZ9L3fS51E+fTd30udRPn03dPPVzUSdoERER8ThqARIRERGPowAkIiIiHkcBSERERDyOApCIiIh4HAUgF5o7dy4JCQn4+fmRlJTE+vXr3V2S2z3xxBNYLJYajz59+ri7LJf73//+x/jx44mNjcVisfDRRx/VOG4YBrNmzSImJgZ/f3/GjBnD3r173VOsi53ps7n11ltrfYfGjRvnnmJdaPbs2QwfPpwOHToQGRnJddddx+7du2ucU1payvTp0+nUqRNBQUHccMMNZGZmuqli12jM53LppZfW+s78+te/dlPFrvPqq68yaNAg54SHycnJfPHFF87jnvZ9UQBykQULFjBjxgwef/xxNm3axODBgxk7dixZWVnuLs3t+vfvT3p6uvPx/fffu7sklysqKmLw4MHMnTu3zuPPPfccL730EvPmzWPdunUEBgYyduxYSktLXVyp653pswEYN25cje/Qu+++68IK3WPlypVMnz6dtWvX8vXXX1NRUcGVV15JUVGR85z777+fTz/9lA8++ICVK1dy9OhRJk6c6MaqW15jPheAO++8s8Z35rnnnnNTxa7TuXNn/vznP7Nx40Y2bNjA5ZdfzoQJE9i+fTvggd8XQ1xixIgRxvTp050/2+12IzY21pg9e7Ybq3K/xx9/3Bg8eLC7y2hVAGPx4sXOnx0OhxEdHW385S9/ce7Lzc01fH19jXfffdcNFbrP6Z+NYRjGLbfcYkyYMMEt9bQmWVlZBmCsXLnSMAzzO+Lt7W188MEHznN27txpAMaaNWvcVabLnf65GIZhXHLJJca9997rvqJakY4dOxr/+te/PPL7ohYgFygvL2fjxo2MGTPGuc9qtTJmzBjWrFnjxspah7179xIbG0u3bt2YMmUKaWlp7i6pVTlw4AAZGRk1vj8hISEkJSXp+1NlxYoVREZG0rt3b+6++26OHz/u7pJcLi8vD4CwsDAANm7cSEVFRY3vTZ8+fejSpYtHfW9O/1yqvfPOO4SHhzNgwABmzpxJcXGxO8pzG7vdznvvvUdRURHJycke+X3RYqgukJ2djd1uJyoqqsb+qKgodu3a5aaqWoekpCTefPNNevfuTXp6Ok8++SQXXXQR27Zto0OHDu4ur1XIyMgAqPP7U33Mk40bN46JEyeSmJjIvn37eOSRR7jqqqtYs2YNNpvN3eW5hMPh4L777mPUqFEMGDAAML83Pj4+hIaG1jjXk743dX0uADfddBNdu3YlNjaWn376iT/84Q/s3r2bRYsWubFa19i6dSvJycmUlpYSFBTE4sWL6devH1u2bPG474sCkLjVVVdd5dweNGgQSUlJdO3alffff5/bb7/djZVJWzF58mTn9sCBAxk0aBDdu3dnxYoVjB492o2Vuc706dPZtm2bR/afa0h9n8tdd93l3B44cCAxMTGMHj2affv20b17d1eX6VK9e/dmy5Yt5OXlsXDhQm655RZWrlzp7rLcQrfAXCA8PBybzVarN31mZibR0dFuqqp1Cg0NpVevXqSkpLi7lFaj+jui70/jdOvWjfDwcI/5Dt1zzz189tlnfPvtt3Tu3Nm5Pzo6mvLycnJzc2uc7ynfm/o+l7okJSUBeMR3xsfHhx49ejBs2DBmz57N4MGDefHFFz3y+6IA5AI+Pj4MGzaM5cuXO/c5HA6WL19OcnKyGytrfQoLC9m3bx8xMTHuLqXVSExMJDo6usb3Jz8/n3Xr1un7U4fDhw9z/Pjxdv8dMgyDe+65h8WLF/PNN9+QmJhY4/iwYcPw9vau8b3ZvXs3aWlp7fp7c6bPpS5btmwBaPffmbo4HA7Kyso88/vi7l7YnuK9994zfH19jTfffNPYsWOHcddddxmhoaFGRkaGu0tzqwceeMBYsWKFceDAAWPVqlXGmDFjjPDwcCMrK8vdpblUQUGBsXnzZmPz5s0GYLzwwgvG5s2bjdTUVMMwDOPPf/6zERoaanz88cfGTz/9ZEyYMMFITEw0SkpK3Fx5y2vosykoKDAefPBBY82aNcaBAweMZcuWGUOHDjV69uxplJaWurv0FnX33XcbISEhxooVK4z09HTno7i42HnOr3/9a6NLly7GN998Y2zYsMFITk42kpOT3Vh1yzvT55KSkmI89dRTxoYNG4wDBw4YH3/8sdGtWzfj4osvdnPlLe/hhx82Vq5caRw4cMD46aefjIcfftiwWCzGV199ZRiG531fFIBc6OWXXza6dOli+Pj4GCNGjDDWrl3r7pLcbtKkSUZMTIzh4+NjxMXFGZMmTTJSUlLcXZbLffvttwZQ63HLLbcYhmEOhX/ssceMqKgow9fX1xg9erSxe/du9xbtIg19NsXFxcaVV15pREREGN7e3kbXrl2NO++80yP+YVHXZwIYb7zxhvOckpIS4ze/+Y3RsWNHIyAgwLj++uuN9PR09xXtAmf6XNLS0oyLL77YCAsLM3x9fY0ePXoYv//97428vDz3Fu4Ct912m9G1a1fDx8fHiIiIMEaPHu0MP4bhed8Xi2EYhuvam0RERETcT32ARERExOMoAImIiIjHUQASERERj6MAJCIiIh5HAUhEREQ8jgKQiIiIeBwFIBEREfE4CkAiIiLicRSAREQaYcWKFVgsllqLRYpI26QAJCIiIh5HAUhEREQ8jgKQiLQJDoeD2bNnk5iYiL+/P4MHD2bhwoXAydtTS5YsYdCgQfj5+XHBBRewbdu2Gtf48MMP6d+/P76+viQkJPD888/XOF5WVsYf/vAH4uPj8fX1pUePHrz++us1ztm4cSPnn38+AQEBjBw5kt27d7fsGxeRFqEAJCJtwuzZs3n77beZN28e27dv5/777+fmm29m5cqVznN+//vf8/zzz/PDDz8QERHB+PHjqaioAMzg8stf/pLJkyezdetWnnjiCR577DHefPNN5+unTp3Ku+++y0svvcTOnTv5xz/+QVBQUI06/vjHP/L888+zYcMGvLy8uO2221zy/kWkeWk1eBFp9crKyggLC2PZsmUkJyc7999xxx0UFxdz1113cdlll/Hee+8xadIkAHJycujcuTNvvvkmv/zlL5kyZQrHjh3jq6++cr7+oYceYsmSJWzfvp09e/bQu3dvvv76a8aMGVOrhhUrVnDZZZexbNkyRo8eDcDnn3/ONddcQ0lJCX5+fi38KYhIc1ILkIi0eikpKRQXF3PFFVcQFBTkfLz99tvs27fPed6p4SgsLIzevXuzc+dOAHbu3MmoUaNqXHfUqFHs3bsXu93Oli1bsNlsXHLJJQ3WMmjQIOd2TEwMAFlZWU1+jyLiWl7uLkBE5EwKCwsBWLJkCXFxcTWO+fr61ghB58rf379R53l7ezu3LRYLYPZPEpG2RS1AItLq9evXD19fX9LS0ujRo0eNR3x8vPO8tWvXOrdPnDjBnj176Nu3LwB9+/Zl1apVNa67atUqevXqhc1mY+DAgTgcjhp9ikSk/VILkIi0eh06dODBBx/k/vvvx+FwcOGFF5KXl8eqVasIDg6ma9euADz11FN06tSJqKgo/vjHPxIeHs51110HwAMPPMDw4cN5+umnmTRpEmvWrOGVV17h73//OwAJCQnccsst3Hbbbbz00ksMHjyY1NRUsrKy+OUvf+muty4iLUQBSETahKeffpqIiAhmz57N/v37CQ0NZejQoTzyyCPOW1B//vOfuffee9m7dy9Dhgzh008/xcfHB4ChQ4fy/vvvM2vWLJ5++mliYmJ46qmnuPXWW52/49VXX+WRRx7hN7/5DcePH6dLly488sgj7ni7ItLCNApMRNq86hFaJ06cIDQ01N3liEgboD5AIiIi4nEUgERERMTj6BaYiIiIeBy1AImIiIjHUQASERERj6MAJCIiIh5HAUhEREQ8jgKQiIiIeBwFIBEREfE4CkAiIiLicRSARERExOP8fxwVYFfpTxJMAAAAAElFTkSuQmCC\n" }, "metadata": {} } ], "source": [ "plt.plot(history.history['loss'])\n", "plt.plot(history.history['val_loss'])\n", "plt.xlabel('epoch')\n", "plt.ylabel('loss')\n", "plt.legend(['train', 'val'])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "Jisn0P9h6k2T" }, "source": [ "## GRU 신경망 훈련하기" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "dwYF578d6k2T", "outputId": "a135f0a7-3ebf-44f5-94f1-a6ba45760f01" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Model: \"sequential_3\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " embedding_3 (Embedding) (None, 100, 16) 8000 \n", " \n", " gru (GRU) (None, 8) 624 \n", " \n", " dense_3 (Dense) (None, 1) 9 \n", " \n", "=================================================================\n", "Total params: 8633 (33.72 KB)\n", "Trainable params: 8633 (33.72 KB)\n", "Non-trainable params: 0 (0.00 Byte)\n", "_________________________________________________________________\n" ] } ], "source": [ "model4 = keras.Sequential()\n", "\n", "model4.add(keras.layers.Embedding(500, 16, input_length=100))\n", "model4.add(keras.layers.GRU(8))\n", "model4.add(keras.layers.Dense(1, activation='sigmoid'))\n", "\n", "model4.summary()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "j2SfOZ3v6k2U", "outputId": "440ad434-7a85-4c01-c6a3-99ed6e742489" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Epoch 1/100\n", "313/313 [==============================] - 15s 40ms/step - loss: 0.6920 - accuracy: 0.5486 - val_loss: 0.6912 - val_accuracy: 0.5724\n", "Epoch 2/100\n", "313/313 [==============================] - 5s 16ms/step - loss: 0.6898 - accuracy: 0.5790 - val_loss: 0.6889 - val_accuracy: 0.5830\n", "Epoch 3/100\n", "313/313 [==============================] - 5s 16ms/step - loss: 0.6865 - accuracy: 0.5975 - val_loss: 0.6852 - val_accuracy: 0.5958\n", "Epoch 4/100\n", "313/313 [==============================] - 6s 18ms/step - loss: 0.6813 - accuracy: 0.6107 - val_loss: 0.6792 - val_accuracy: 0.5994\n", "Epoch 5/100\n", "313/313 [==============================] - 4s 14ms/step - loss: 0.6732 - accuracy: 0.6204 - val_loss: 0.6701 - val_accuracy: 0.6134\n", "Epoch 6/100\n", "313/313 [==============================] - 5s 16ms/step - loss: 0.6608 - accuracy: 0.6387 - val_loss: 0.6556 - val_accuracy: 0.6302\n", "Epoch 7/100\n", "313/313 [==============================] - 5s 16ms/step - loss: 0.6404 - accuracy: 0.6581 - val_loss: 0.6304 - val_accuracy: 0.6640\n", "Epoch 8/100\n", "313/313 [==============================] - 5s 15ms/step - loss: 0.6019 - accuracy: 0.6898 - val_loss: 0.5781 - val_accuracy: 0.7058\n", "Epoch 9/100\n", "313/313 [==============================] - 5s 16ms/step - loss: 0.5315 - accuracy: 0.7373 - val_loss: 0.5158 - val_accuracy: 0.7470\n", "Epoch 10/100\n", "313/313 [==============================] - 5s 15ms/step - loss: 0.4969 - accuracy: 0.7618 - val_loss: 0.4963 - val_accuracy: 0.7624\n", "Epoch 11/100\n", "313/313 [==============================] - 4s 14ms/step - loss: 0.4798 - accuracy: 0.7743 - val_loss: 0.4828 - val_accuracy: 0.7722\n", "Epoch 12/100\n", "313/313 [==============================] - 5s 16ms/step - loss: 0.4667 - accuracy: 0.7823 - val_loss: 0.4724 - val_accuracy: 0.7772\n", "Epoch 13/100\n", "313/313 [==============================] - 4s 14ms/step - loss: 0.4567 - accuracy: 0.7879 - val_loss: 0.4655 - val_accuracy: 0.7826\n", "Epoch 14/100\n", "313/313 [==============================] - 4s 14ms/step - loss: 0.4485 - accuracy: 0.7962 - val_loss: 0.4589 - val_accuracy: 0.7856\n", "Epoch 15/100\n", "313/313 [==============================] - 5s 17ms/step - loss: 0.4425 - accuracy: 0.7997 - val_loss: 0.4651 - val_accuracy: 0.7866\n", "Epoch 16/100\n", "313/313 [==============================] - 5s 15ms/step - loss: 0.4375 - accuracy: 0.8038 - val_loss: 0.4533 - val_accuracy: 0.7942\n", "Epoch 17/100\n", "313/313 [==============================] - 4s 14ms/step - loss: 0.4331 - accuracy: 0.8059 - val_loss: 0.4504 - val_accuracy: 0.7922\n", "Epoch 18/100\n", "313/313 [==============================] - 5s 16ms/step - loss: 0.4300 - accuracy: 0.8080 - val_loss: 0.4471 - val_accuracy: 0.7930\n", "Epoch 19/100\n", "313/313 [==============================] - 4s 14ms/step - loss: 0.4270 - accuracy: 0.8095 - val_loss: 0.4477 - val_accuracy: 0.7920\n", "Epoch 20/100\n", "313/313 [==============================] - 4s 14ms/step - loss: 0.4246 - accuracy: 0.8117 - val_loss: 0.4448 - val_accuracy: 0.7942\n", "Epoch 21/100\n", "313/313 [==============================] - 5s 16ms/step - loss: 0.4231 - accuracy: 0.8102 - val_loss: 0.4453 - val_accuracy: 0.7912\n", "Epoch 22/100\n", "313/313 [==============================] - 5s 15ms/step - loss: 0.4215 - accuracy: 0.8124 - val_loss: 0.4476 - val_accuracy: 0.7946\n", "Epoch 23/100\n", "313/313 [==============================] - 4s 14ms/step - loss: 0.4201 - accuracy: 0.8131 - val_loss: 0.4430 - val_accuracy: 0.7964\n", "Epoch 24/100\n", "313/313 [==============================] - 5s 17ms/step - loss: 0.4187 - accuracy: 0.8145 - val_loss: 0.4433 - val_accuracy: 0.7908\n", "Epoch 25/100\n", "313/313 [==============================] - 5s 15ms/step - loss: 0.4181 - accuracy: 0.8130 - val_loss: 0.4419 - val_accuracy: 0.7932\n", "Epoch 26/100\n", "313/313 [==============================] - 4s 14ms/step - loss: 0.4168 - accuracy: 0.8151 - val_loss: 0.4433 - val_accuracy: 0.7934\n", "Epoch 27/100\n", "313/313 [==============================] - 5s 17ms/step - loss: 0.4162 - accuracy: 0.8148 - val_loss: 0.4412 - val_accuracy: 0.7930\n", "Epoch 28/100\n", "313/313 [==============================] - 5s 15ms/step - loss: 0.4157 - accuracy: 0.8142 - val_loss: 0.4418 - val_accuracy: 0.7916\n", "Epoch 29/100\n", "313/313 [==============================] - 4s 14ms/step - loss: 0.4148 - accuracy: 0.8148 - val_loss: 0.4455 - val_accuracy: 0.7964\n", "Epoch 30/100\n", "313/313 [==============================] - 5s 17ms/step - loss: 0.4136 - accuracy: 0.8165 - val_loss: 0.4423 - val_accuracy: 0.7914\n" ] } ], "source": [ "rmsprop = keras.optimizers.RMSprop(learning_rate=1e-4)\n", "model4.compile(optimizer=rmsprop, loss='binary_crossentropy',\n", " metrics=['accuracy'])\n", "\n", "checkpoint_cb = keras.callbacks.ModelCheckpoint('best-gru-model.h5',\n", " save_best_only=True)\n", "early_stopping_cb = keras.callbacks.EarlyStopping(patience=3,\n", " restore_best_weights=True)\n", "\n", "history = model4.fit(train_seq, train_target, epochs=100, batch_size=64,\n", " validation_data=(val_seq, val_target),\n", " callbacks=[checkpoint_cb, early_stopping_cb])" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 449 }, "id": "3yUJM4nA6k2U", "outputId": "2f8149ee-d4fe-4282-8189-ec442ae1a375" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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+vTpY3Ts2NEoKSlxd+luM2bMGCMsLMyYP3++kZGR4dqKiopcx/zpT38yWrdubfzvf/8zfv31VyM1NdVITU11Y9Xud6rPbevWrcbjjz9u/Prrr8aOHTuML774wmjXrp1x/vnnu7ly93nwwQeNBQsWGDt27DDWrFljPPjgg4bFYjG+++47wzAa7numENSIXnrpJaN169aG3W43+vfvbyxZssTdJTVpw4YNM+Li4gy73W4kJCQYw4YNM7Zu3eruspqcH3/80QCO22677TbDMMzb5B955BEjJibG8PPzMy655BJj06ZN7i26CTjZ51ZUVGRcdtllRsuWLQ1fX1+jTZs2xujRo73+P1pq+rwA4+2333YdU1xcbPz5z382IiIijMDAQOPaa681MjIy3Fd0E3Cqz2337t3G+eefb0RGRhp+fn5Ghw4djL/97W9Gbm6uewt3o9tvv91o06aNYbfbjZYtWxqXXHKJKwAZRsN9zyyGYRj1bJkSERER8VgaEyQiIiJeSSFIREREvJJCkIiIiHglhSARERHxSgpBIiIi4pUUgkRERMQrKQSJiIiIV1IIEhEREa+kECQiUgvz58/HYrEct2ijiHguhSARERHxSgpBIiIi4pUUgkTEIzidTiZNmkTbtm0JCAggOTmZmTNnAke6qmbPnk2vXr3w9/fnnHPOYd26ddWu8emnn9K9e3f8/PxISkri+eefr/Z6aWkpf//730lMTMTPz48OHTrw5ptvVjtmxYoVnH322QQGBjJgwAA2bdp0Zt+4iJwxCkEi4hEmTZrEu+++y7Rp01i/fj333Xcft956KwsWLHAd87e//Y3nn3+e5cuX07JlS4YMGUJ5eTlghpcbb7yRm266ibVr1/LPf/6TRx55hOnTp7vOHzFiBB9++CFTpkxhw4YNvPrqqwQHB1er4+GHH+b555/n119/xcfHh9tvv71R3r+INDytIi8iTV5paSmRkZH88MMPpKamuvbfeeedFBUVcdddd3HRRRfx0UcfMWzYMAAOHTpEq1atmD59OjfeeCPDhw9n//79fPfdd67zH3jgAWbPns369evZvHkznTt35vvvvyctLe24GubPn89FF13EDz/8wCWXXALAnDlzuPLKKykuLsbf3/8Mfwoi0tDUEiQiTd7WrVspKiri0ksvJTg42LW9++67bNu2zXXc0QEpMjKSzp07s2HDBgA2bNjAwIEDq1134MCBbNmyBYfDwerVq7HZbFxwwQUnraVXr16u53FxcQBkZ2ef9nsUkcbn4+4CREROpaCgAIDZs2eTkJBQ7TU/P79qQai+AgICanWcr6+v67nFYgHM8Uoi4nnUEiQiTV63bt3w8/Nj9+7ddOjQodqWmJjoOm7JkiWu54cPH2bz5s107doVgK5du7Jo0aJq1120aBGdOnXCZrPRs2dPnE5ntTFGItK8qSVIRJq8kJAQxo8fz3333YfT6eTcc88lNzeXRYsWERoaSps2bQB4/PHHadGiBTExMTz88MNERUVxzTXXAHD//ffTr18/nnjiCYYNG8bixYt5+eWX+c9//gNAUlISt912G7fffjtTpkwhOTmZXbt2kZ2dzY033uiuty4iZ5BCkIh4hCeeeIKWLVsyadIktm/fTnh4OH369OGhhx5ydUc9/fTT3HPPPWzZsoXevXvz1VdfYbfbAejTpw8ff/wxEydO5IknniAuLo7HH3+ckSNHun7HK6+8wkMPPcSf//xnDh48SOvWrXnooYfc8XZFpBHo7jAR8XhVd24dPnyY8PBwd5cjIh5CY4JERETEKykEiYiIiFdSd5iIiIh4JbUEiYiIiFdSCBIRERGvpBAkIiIiXkkhSERERLySQpCIiIh4JYUgERER8UoKQSIiIuKVFIJERETEK/1/UHK1BnDxjDAAAAAASUVORK5CYII=\n" }, "metadata": {} } ], "source": [ "plt.plot(history.history['loss'])\n", "plt.plot(history.history['val_loss'])\n", "plt.xlabel('epoch')\n", "plt.ylabel('loss')\n", "plt.legend(['train', 'val'])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "Ja3-116b6k2V" }, "source": [ "## 마무리" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "-5WtFRN-6k2V", "outputId": "0935691a-c23b-4991-c709-fd0c6050eab2", "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "782/782 [==============================] - 5s 6ms/step - loss: 0.4346 - accuracy: 0.7975\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "[0.43462270498275757, 0.7974799871444702]" ] }, "metadata": {}, "execution_count": 16 } ], "source": [ "test_seq = pad_sequences(test_input, maxlen=100)\n", "\n", "rnn_model = keras.models.load_model('best-2rnn-model.h5')\n", "\n", "rnn_model.evaluate(test_seq, test_target)" ] } ], "metadata": { "accelerator": "GPU", "colab": { "name": "9-3.ipynb", "provenance": [] }, "kernelspec": { "display_name": "default:Python", "language": "python", "name": "conda-env-default-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.10" } }, "nbformat": 4, "nbformat_minor": 0 }