{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "kernelspec": { "display_name": "TensorFlow 2.3 on Python 3.6 (CUDA 10.1)", "language": "python", "name": "python3" }, "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.6.9" }, "colab": { "name": "11-4.rnn_sentiment_classifier.ipynb", "provenance": [] }, "accelerator": "GPU" }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "fl8VG9enicGG" }, "source": [ "# RNN 감성 분류기" ] }, { "cell_type": "markdown", "metadata": { "id": "reAVjNDQicGK" }, "source": [ "이 노트북에서 RNN을 사용해 감성에 따라 IMDB 영화 리뷰를 분류합니다." ] }, { "cell_type": "markdown", "metadata": { "id": "orUztv6SicGL" }, "source": [ "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/rickiepark/dl-illustrated/blob/master/notebooks/11-4.rnn_sentiment_classifier.ipynb)" ] }, { "cell_type": "markdown", "metadata": { "id": "YJ9teMgbicGL" }, "source": [ "#### 라이브러리를 적재합니다." ] }, { "cell_type": "code", "metadata": { "id": "N7feftmSicGL" }, "source": [ "from tensorflow import keras\n", "from tensorflow.keras.datasets import imdb\n", "from tensorflow.keras.preprocessing.sequence import pad_sequences\n", "from tensorflow.keras.models import Sequential\n", "from tensorflow.keras.layers import Dense, Dropout, Embedding, SpatialDropout1D\n", "from tensorflow.keras.layers import SimpleRNN # new! \n", "from tensorflow.keras.callbacks import ModelCheckpoint\n", "import os\n", "from sklearn.metrics import roc_auc_score \n", "import matplotlib.pyplot as plt \n", "%matplotlib inline" ], "execution_count": 1, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "PxsYoFXoicGM" }, "source": [ "#### 하이퍼파라미터를 설정합니다." ] }, { "cell_type": "code", "metadata": { "id": "8z9MJQf3icGM" }, "source": [ "# 출력 디렉토리\n", "output_dir = 'model_output/rnn'\n", "\n", "# 훈련\n", "epochs = 16 # 더 많이!\n", "batch_size = 128\n", "\n", "# 벡터 공간 임베딩\n", "n_dim = 64 \n", "n_unique_words = 10000 \n", "max_review_length = 100 # 시간에 따른 그레이디언트 소실 때문에 낮춤\n", "pad_type = trunc_type = 'pre'\n", "drop_embed = 0.2 \n", "\n", "# RNN 층 구조\n", "n_rnn = 256 \n", "drop_rnn = 0.2\n", "\n", "# 밀집 층 구조\n", "# n_dense = 256\n", "# dropout = 0.2" ], "execution_count": 2, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "FLXby5f-icGM" }, "source": [ "#### 데이터를 적재합니다." ] }, { "cell_type": "code", "metadata": { "id": "d7nK-B-cicGM", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "ac7affd4-a42f-43c8-c367-a693d8c5e400" }, "source": [ "(x_train, y_train), (x_valid, y_valid) = imdb.load_data(num_words=n_unique_words) # n_words_to_skip 삭제" ], "execution_count": 3, "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" ] } ] }, { "cell_type": "markdown", "metadata": { "id": "YI1-tFkiicGM" }, "source": [ "#### 데이터를 전처리합니다." ] }, { "cell_type": "code", "metadata": { "id": "UiARILnJicGN" }, "source": [ "x_train = pad_sequences(x_train, maxlen=max_review_length, padding=pad_type, truncating=trunc_type, value=0)\n", "x_valid = pad_sequences(x_valid, maxlen=max_review_length, padding=pad_type, truncating=trunc_type, value=0)" ], "execution_count": 4, "outputs": [] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "id": "ZQ_Bb0-LicGN" }, "source": [ "#### 신경망 만들기" ] }, { "cell_type": "code", "metadata": { "id": "JQoJSqO1icGN" }, "source": [ "model = Sequential()\n", "model.add(Embedding(n_unique_words, n_dim, input_length=max_review_length)) \n", "model.add(SpatialDropout1D(drop_embed))\n", "model.add(SimpleRNN(n_rnn, dropout=drop_rnn))\n", "# model.add(Dense(n_dense, activation='relu')) # 일반적으로 NLP에서는 밀집 층을 위에 놓지 않습니다.\n", "# model.add(Dropout(dropout))\n", "model.add(Dense(1, activation='sigmoid'))" ], "execution_count": 5, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "ZQpDJZXticGN", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "a863e69b-1a4a-4107-d829-5f9ea9fd2b1e" }, "source": [ "model.summary() " ], "execution_count": 6, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Model: \"sequential\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " embedding (Embedding) (None, 100, 64) 640000 \n", " \n", " spatial_dropout1d (SpatialD (None, 100, 64) 0 \n", " ropout1D) \n", " \n", " simple_rnn (SimpleRNN) (None, 256) 82176 \n", " \n", " dense (Dense) (None, 1) 257 \n", " \n", "=================================================================\n", "Total params: 722,433\n", "Trainable params: 722,433\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] } ] }, { "cell_type": "markdown", "metadata": { "id": "gybhPuapicGO" }, "source": [ "#### 모델 설정" ] }, { "cell_type": "code", "metadata": { "id": "stvu9V4qicGO" }, "source": [ "model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])" ], "execution_count": 7, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "pSJq2Y0VicGO" }, "source": [ "modelcheckpoint = ModelCheckpoint(filepath=output_dir+\"/weights.{epoch:02d}.hdf5\")\n", "if not os.path.exists(output_dir):\n", " os.makedirs(output_dir)" ], "execution_count": 8, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "WjCW_-oSicGO" }, "source": [ "#### 훈련!" ] }, { "cell_type": "code", "metadata": { "id": "7mKYC5oFicGO", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "64da3023-7aa4-406f-96e1-16b288557b0b" }, "source": [ "model.fit(x_train, y_train, batch_size=batch_size, epochs=epochs, verbose=1, validation_data=(x_valid, y_valid), callbacks=[modelcheckpoint])" ], "execution_count": 9, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Epoch 1/16\n", "196/196 [==============================] - 32s 145ms/step - loss: 0.7060 - accuracy: 0.5008 - val_loss: 0.6956 - val_accuracy: 0.5116\n", "Epoch 2/16\n", "196/196 [==============================] - 30s 151ms/step - loss: 0.6901 - accuracy: 0.5316 - val_loss: 0.6784 - val_accuracy: 0.5811\n", "Epoch 3/16\n", "196/196 [==============================] - 29s 147ms/step - loss: 0.6686 - accuracy: 0.5772 - val_loss: 0.6505 - val_accuracy: 0.6022\n", "Epoch 4/16\n", "196/196 [==============================] - 28s 142ms/step - loss: 0.5806 - accuracy: 0.6909 - val_loss: 0.5614 - val_accuracy: 0.7136\n", "Epoch 5/16\n", "196/196 [==============================] - 28s 141ms/step - loss: 0.5432 - accuracy: 0.7330 - val_loss: 0.6053 - val_accuracy: 0.6990\n", "Epoch 6/16\n", "196/196 [==============================] - 28s 142ms/step - loss: 0.4877 - accuracy: 0.7744 - val_loss: 0.6213 - val_accuracy: 0.6602\n", "Epoch 7/16\n", "196/196 [==============================] - 28s 141ms/step - loss: 0.6153 - accuracy: 0.6772 - val_loss: 0.6432 - val_accuracy: 0.6290\n", "Epoch 8/16\n", "196/196 [==============================] - 28s 142ms/step - loss: 0.5928 - accuracy: 0.7010 - val_loss: 0.5688 - val_accuracy: 0.7085\n", "Epoch 9/16\n", "196/196 [==============================] - 29s 150ms/step - loss: 0.5478 - accuracy: 0.7166 - val_loss: 0.6301 - val_accuracy: 0.6164\n", "Epoch 10/16\n", "196/196 [==============================] - 28s 142ms/step - loss: 0.4784 - accuracy: 0.7787 - val_loss: 0.5283 - val_accuracy: 0.7663\n", "Epoch 11/16\n", "196/196 [==============================] - 28s 144ms/step - loss: 0.5241 - accuracy: 0.7458 - val_loss: 0.8046 - val_accuracy: 0.6140\n", "Epoch 12/16\n", "196/196 [==============================] - 28s 144ms/step - loss: 0.4789 - accuracy: 0.7847 - val_loss: 0.6048 - val_accuracy: 0.7252\n", "Epoch 13/16\n", "196/196 [==============================] - 28s 143ms/step - loss: 0.4990 - accuracy: 0.7623 - val_loss: 0.5962 - val_accuracy: 0.7204\n", "Epoch 14/16\n", "196/196 [==============================] - 28s 143ms/step - loss: 0.4153 - accuracy: 0.8120 - val_loss: 0.5443 - val_accuracy: 0.7659\n", "Epoch 15/16\n", "196/196 [==============================] - 28s 144ms/step - loss: 0.4223 - accuracy: 0.8146 - val_loss: 0.5668 - val_accuracy: 0.7026\n", "Epoch 16/16\n", "196/196 [==============================] - 28s 141ms/step - loss: 0.5206 - accuracy: 0.7359 - val_loss: 0.7328 - val_accuracy: 0.6922\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": {}, "execution_count": 9 } ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "id": "OTWp8UznicGP" }, "source": [ "#### 평가" ] }, { "cell_type": "code", "metadata": { "id": "A1INhEG2icGP" }, "source": [ "model.load_weights(output_dir+\"/weights.07.hdf5\") " ], "execution_count": 10, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "pasKnvgKicGP", "outputId": "f62c9cc5-350b-458b-cbd8-c803733ddbb5", "colab": { "base_uri": "https://localhost:8080/" } }, "source": [ "y_hat = model.predict(x_valid)" ], "execution_count": 11, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "782/782 [==============================] - 8s 11ms/step\n" ] } ] }, { "cell_type": "code", "metadata": { "id": "6x3Mwhu7icGP", "colab": { "base_uri": "https://localhost:8080/", "height": 268 }, "outputId": "6961b086-8841-4663-c34b-8a9b51f9cd25" }, "source": [ "plt.hist(y_hat)\n", "_ = plt.axvline(x=0.5, color='orange')" ], "execution_count": 12, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "code", "metadata": { "id": "KwfLHETcicGP", "colab": { "base_uri": "https://localhost:8080/", "height": 36 }, "outputId": "48946076-4881-4584-ae78-a02848c33987" }, "source": [ "\"{:0.2f}\".format(roc_auc_score(y_valid, y_hat)*100.0)" ], "execution_count": 13, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "'69.33'" ], "application/vnd.google.colaboratory.intrinsic+json": { "type": "string" } }, "metadata": {}, "execution_count": 13 } ] } ] }