{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Using TensorFlow backend.\n" ] }, { "data": { "text/plain": [ "'2.2.4'" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import keras\n", "keras.__version__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Understanding recurrent neural networks\n", "\n", "이 노트북은 [케라스 창시자에게 배우는 딥러닝](https://tensorflow.blog/케라스-창시자에게-배우는-딥러닝/) 책의 6장 2절의 코드 예제입니다. 책에는 더 많은 내용과 그림이 있습니다. 이 노트북에는 소스 코드에 관련된 설명만 포함합니다. 이 노트북의 설명은 케라스 버전 2.2.2에 맞추어져 있습니다. 케라스 최신 버전이 릴리스되면 노트북을 다시 테스트하기 때문에 설명과 코드의 결과가 조금 다를 수 있습니다.\n", "\n", "---\n", "\n", "[...]\n", "\n", "## 케라스의 순환 층\n", "\n", "\n", "넘파이로 간단하게 구현한 과정이 실제 케라스의 `SimpleRNN` 층에 해당합니다:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from keras.layers import SimpleRNN" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`SimpleRNN`이 한 가지 다른 점은 넘파이 예제처럼 하나의 시퀀스가 아니라 다른 케라스 층과 마찬가지로 시퀀스 배치를 처리한다는 것입니다. 즉, `(timesteps, input_features)` 크기가 아니라 `(batch_size, timesteps, input_features)` 크기의 입력을 받습니다.\n", "\n", "케라스에 있는 모든 순환 층과 동일하게 `SimpleRNN`은 두 가지 모드로 실행할 수 있습니다. 각 타임스텝의 출력을 모은 전체 시퀀스를 반환하거나(크기가 `(batch_size, timesteps, output_features)`인 3D 텐서), 입력 시퀀스에 대한 마지막 출력만 반환할 수 있습니다(크기가 `(batch_size, output_features)`인 2D 텐서). 이 모드는 객체를 생성할 때 `return_sequences` 매개변수로 선택할 수 있습니다. 예제를 살펴보죠:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "embedding_1 (Embedding) (None, None, 32) 320000 \n", "_________________________________________________________________\n", "simple_rnn_1 (SimpleRNN) (None, 32) 2080 \n", "=================================================================\n", "Total params: 322,080\n", "Trainable params: 322,080\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] } ], "source": [ "from keras.models import Sequential\n", "from keras.layers import Embedding, SimpleRNN\n", "\n", "model = Sequential()\n", "model.add(Embedding(10000, 32))\n", "model.add(SimpleRNN(32))\n", "model.summary()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "embedding_2 (Embedding) (None, None, 32) 320000 \n", "_________________________________________________________________\n", "simple_rnn_2 (SimpleRNN) (None, None, 32) 2080 \n", "=================================================================\n", "Total params: 322,080\n", "Trainable params: 322,080\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] } ], "source": [ "model = Sequential()\n", "model.add(Embedding(10000, 32))\n", "model.add(SimpleRNN(32, return_sequences=True))\n", "model.summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "네트워크의 표현력을 증가시키기 위해 여러 개의 순환 층을 차례대로 쌓는 것이 유용할 때가 있습니다. 이런 설정에서는 중간 층들이 전체 출력 시퀀스를 반환하도록 설정해야 합니다:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "embedding_3 (Embedding) (None, None, 32) 320000 \n", "_________________________________________________________________\n", "simple_rnn_3 (SimpleRNN) (None, None, 32) 2080 \n", "_________________________________________________________________\n", "simple_rnn_4 (SimpleRNN) (None, None, 32) 2080 \n", "_________________________________________________________________\n", "simple_rnn_5 (SimpleRNN) (None, None, 32) 2080 \n", "_________________________________________________________________\n", "simple_rnn_6 (SimpleRNN) (None, 32) 2080 \n", "=================================================================\n", "Total params: 328,320\n", "Trainable params: 328,320\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] } ], "source": [ "model = Sequential()\n", "model.add(Embedding(10000, 32))\n", "model.add(SimpleRNN(32, return_sequences=True))\n", "model.add(SimpleRNN(32, return_sequences=True))\n", "model.add(SimpleRNN(32, return_sequences=True))\n", "model.add(SimpleRNN(32)) # 맨 위 층만 마지막 출력을 반환합니다.\n", "model.summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "이제 IMDB 영화 리뷰 분류 문제에 적용해 보죠. 먼저 데이터를 전처리합니다:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "데이터 로딩...\n", "25000 훈련 시퀀스\n", "25000 테스트 시퀀스\n", "시퀀스 패딩 (samples x time)\n", "input_train 크기: (25000, 500)\n", "input_test 크기: (25000, 500)\n" ] } ], "source": [ "from keras.datasets import imdb\n", "from keras.preprocessing import sequence\n", "\n", "max_features = 10000 # 특성으로 사용할 단어의 수\n", "maxlen = 500 # 사용할 텍스트의 길이(가장 빈번한 max_features 개의 단어만 사용합니다)\n", "batch_size = 32\n", "\n", "print('데이터 로딩...')\n", "(input_train, y_train), (input_test, y_test) = imdb.load_data(num_words=max_features)\n", "print(len(input_train), '훈련 시퀀스')\n", "print(len(input_test), '테스트 시퀀스')\n", "\n", "print('시퀀스 패딩 (samples x time)')\n", "input_train = sequence.pad_sequences(input_train, maxlen=maxlen)\n", "input_test = sequence.pad_sequences(input_test, maxlen=maxlen)\n", "print('input_train 크기:', input_train.shape)\n", "print('input_test 크기:', input_test.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`Embedding` 층과 `SimpleRNN` 층을 사용해 간단한 순환 네트워크를 훈련시켜 보겠습니다:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 20000 samples, validate on 5000 samples\n", "Epoch 1/10\n", "20000/20000 [==============================] - 16s 782us/step - loss: 0.6448 - acc: 0.6115 - val_loss: 0.6156 - val_acc: 0.6736\n", "Epoch 2/10\n", "20000/20000 [==============================] - 15s 747us/step - loss: 0.4175 - acc: 0.8193 - val_loss: 0.3661 - val_acc: 0.8476\n", "Epoch 3/10\n", "20000/20000 [==============================] - 15s 745us/step - loss: 0.3060 - acc: 0.8759 - val_loss: 0.4140 - val_acc: 0.8112\n", "Epoch 4/10\n", "20000/20000 [==============================] - 15s 746us/step - loss: 0.2431 - acc: 0.9046 - val_loss: 0.3548 - val_acc: 0.8496\n", "Epoch 5/10\n", "20000/20000 [==============================] - 15s 746us/step - loss: 0.1911 - acc: 0.9294 - val_loss: 0.3922 - val_acc: 0.8422\n", "Epoch 6/10\n", "20000/20000 [==============================] - 15s 748us/step - loss: 0.1410 - acc: 0.9494 - val_loss: 0.3733 - val_acc: 0.8578\n", "Epoch 7/10\n", "20000/20000 [==============================] - 15s 746us/step - loss: 0.0995 - acc: 0.9662 - val_loss: 0.4511 - val_acc: 0.8466\n", "Epoch 8/10\n", "20000/20000 [==============================] - 15s 746us/step - loss: 0.0647 - acc: 0.9796 - val_loss: 0.4689 - val_acc: 0.8410\n", "Epoch 9/10\n", "20000/20000 [==============================] - 15s 746us/step - loss: 0.0402 - acc: 0.9882 - val_loss: 0.5292 - val_acc: 0.8382\n", "Epoch 10/10\n", "20000/20000 [==============================] - 15s 747us/step - loss: 0.0247 - acc: 0.9930 - val_loss: 0.5893 - val_acc: 0.8314\n" ] } ], "source": [ "from keras.layers import Dense\n", "\n", "model = Sequential()\n", "model.add(Embedding(max_features, 32))\n", "model.add(SimpleRNN(32))\n", "model.add(Dense(1, activation='sigmoid'))\n", "\n", "model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['acc'])\n", "history = model.fit(input_train, y_train,\n", " epochs=10,\n", " batch_size=128,\n", " validation_split=0.2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "이제 훈련과 검증의 손실과 정확도를 그래프로 그립니다:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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oIA5c+ZUqtv48eM5/PDDy+rn0Wiqixcv5thjjyUvL4/8/HxWrFgBwO23306fPn3Iy8vjpl31vVIkjTR0t0p1brsNcnIqLsvJCct3hYwL+g39i1y4cCEXX3wxH374IZ06deKOO+6gsLCQuXPnMmPGDBYuXFhpm40bN3L00Uczd+5cjjzySB577LEq9+3ufPDBB9x1111lJ5Df//737LvvvsydO5dx48bx4YcfVrntNddcw6xZs/joo4/YuHEjr7zyCgCjR4/m2muvZe7cubz77rvsvffevPDCC7z88st88MEHzJ07l+uvvz5JR0ckfTV4t0o1xoyBiROhSxcwCz8nTgzLd4WMC/oN/Ys86KCDOPzww8vmn3rqKfLz88nPz+fjjz+uMujvsccenHjiiQAcdthhZa3teKeffnqlMu+88w6jRo0CIC8vj169elW57WuvvcaAAQPIy8vjH//4BwsWLGDDhg2sXbuWU045BQg3U+Xk5PDqq69y0UUXscceewCw11571f1AiNRBOvSld+5ct+W70pgxsGIF7NgRfu6qgA8ZGPQb+hfZsmXLstdLlizh/vvv5/XXX2fevHmMGDGiyrz15s2bl71u2rQpJSUlVe579913r1SmtJumJlu2bOHKK6/k2WefZd68eVx00UVl9agqrdLdlW4pDaahUxSr09DdKuki44J+Kn+RX3/9Na1bt6ZNmzZ88cUXTJ+e/AzVwYMHM3XqVAA++uijKr9JbN26lSZNmtChQwc2bdrEM888A0C7du3o0KEDL7zwAhBuetuyZQvDhw/nj3/8I1u3bgVg/fpGmWQljUS69KU3dLdKuki78fR3Vukv7KabQpdO584h4DfELzI/P5+ePXvSu3dvDjzwQAYNGpT097jqqqv46U9/St++fcnPz6d37960bdu2Qpn27dtz/vnn07t3b7p06cLAgQPL1k2ePJmf/exn3HTTTTRv3pxnnnmGk08+mblz51JQUECzZs045ZRTuPXWW5NedxFIn750CHEh04N8vLR7Rm5BQYHHP0Tl448/pkePHimqUXopKSmhpKSEFi1asGTJEoYPH86SJUvYbbf0OH/rdyW16do1dOnE69Il9GdL/ZjZbHcvqK1cekQKSdg333zDsGHDKCkpwd15+OGH0ybgiyTitttCH35sF0829KWnC0WLRmbPPfdk9uzZqa6GSL2lsgtWMvBCrojULB3SJRsyRVEqUktfJIuUpkuWdq2UpkuCAm+2UEtfJIukS7qkpI6CvkgWSad0SUkNBf0EDB06tNKNVvfddx9XXHFFjdu1atUKgFWrVnHmmWdWu+/4FNV49913H1timmcnnXQSX331VSJVF6kgnYYekNRQ0E/A6NGjmTJlSoVlU6ZMYfTo0Qltv//++/P000/X+/3jg/5LL73EnnvuWe/9SfbK1qEHpJyCfgLOPPNMXnzxRb777jsAVqxYwapVqxg8eHBZ3nx+fj59+vTh+eefr7T9ihUr6N27NxCGSBg1ahR9+/blnHPOKRv6AODyyy8vG5Z5/PjxADzwwAOsWrWKY445hmOOOQaArl27snbtWgDuueceevfuTe/evcuGZV6xYgU9evTg0ksvpVevXgwfPrzC+5R64YUXGDhwIP379+e4445j9erVQLgX4MILL6RPnz707du3bBiHV155hfz8fPLy8hg2bFhSjq00rGwdekDKNbrsnV/8AqoYPn6n9OsHUbysUvv27RkwYACvvPIKI0eOZMqUKZxzzjmYGS1atODZZ5+lTZs2rF27liOOOIJTTz212gHMHnroIXJycpg3bx7z5s0jPz+/bN1tt93GXnvtxfbt2xk2bBjz5s3j6quv5p577uGNN96gQ4cOFfY1e/Zs/vSnP/H+++/j7gwcOJCjjz6adu3asWTJEp566ikeeeQRzj77bJ555hnOO++8CtsPHjyYmTNnYmY8+uij3Hnnnfzud7/j1ltvpW3btnz00UcAbNiwgeLiYi699FLeeustunXrpvF5GrFsHHpAyiXU0jezEWa2yMyWmtm4KtZ3MbPXzGyemb1pZrkx67ab2ZxompbMyjek2C6e2K4dd+fGG2+kb9++HHfccXz++edlLeaqvPXWW2XBt2/fvvTt27ds3dSpU8nPz6d///4sWLCgysHUYr3zzjv8+Mc/pmXLlrRq1YrTTz+dt99+G4Bu3brRr18/oPrhm4uKijjhhBPo06cPd911FwsWLADg1Vdf5ec//3lZuXbt2jFz5kyOOuoounXrBmj4ZZHGqtaWvpk1BR4EjgeKgFlmNs3dYyPS3cCf3f1xMzsW+C3wk2jdVnfvl6wK19Qi35VOO+00rrvuOv71r3+xdevWshb65MmTKS4uZvbs2TRr1oyuXbtWOZxyrKq+BSxfvpy7776bWbNm0a5dOy644IJa91PTuEmlwzJDGJq5qu6dq666iuuuu45TTz2VN998k1tuuaVsv/F11PDLO2/yZN2FKqmXSEt/ALDU3Ze5+zZgCjAyrkxP4LXo9RtVrG/0WrVqxdChQ7nooosqXMDduHEje++9N82aNeONN97g06pGkopx1FFHlT38fP78+cybNw8IwzK3bNmStm3bsnr1al5++eWybVq3bs2mTZuq3Ndzzz3Hli1b2Lx5M88++yxDhgxJ+DNt3LiRTp06AfD444+XLR8+fDh/+MMfyuY3bNjAkUceyT/+8Q+WL18OaPjlukqXMeRFEgn6nYDPYuaLomWx5gJnRK9/DLQ2s/bRfAszKzSzmWZ22k7VNsVGjx7N3Llzy55cBTBmzBgKCwspKChg8uTJHHrooTXu4/LLL+ebb76hb9++3HnnnQwYMAAIT8Hq378/vXr14qKLLqowLPPYsWM58cQTyy7klsrPz+eCCy5gwIABDBw4kEsuuYT+/fsn/HluueUWzjrrLIYMGVLhesHNN9/Mhg0b6N27N3l5ebzxxht07NiRiRMncvrpp5OXl8c555yT8PuIboqS9FHr0MpmdhZwgrtfEs3/BBjg7lfFlNkf+APQDXiLcALo5e4bzWx/d19lZgcCrwPD3P2TuPcYC4wF6Ny582HxrWUN19t46HdVtSZNQgs/nlkYf0ZkZyU6tHIiLf0i4ICY+VxgVWwBd1/l7qe7e3/gpmjZxtJ10c9lwJtApaaou0909wJ3L+jYsWMCVRJpXHRTlKSLRIL+LKC7mXUzs+bAKKBCFo6ZdTCz0n39GngsWt7OzHYvLQMMAmpOSRHJQLopStJFrUHf3UuAK4HpwMfAVHdfYGYTzOzUqNhQYJGZLQb2AUr/lHsAhWY2l3CB9464rJ+EpdsTvqQy/Y6qp5uiJF00isclLl++nNatW9O+fXulDaYpd2fdunVs2rSpLJdfRBpORj0uMTc3l6KiIoqLi1NdFalBixYtyM3Nrb2giKRMowj6zZo1U+tRRCQJNOCaZLx0eDygSLpoFC19kfrS4wFFKlJLXzKa7oQVqUhBXzKaHg8oUpGCvmQ03QkrUpGCvmQ03QkrUpGCvmQ03QkrUpGydyTj6fGAIuXU0hcRySIK+iIiWURBX0Qkiyjoi4hkEQV9EZEsoqAvu4wGOhNJP0rZlF1CA52JpKeEWvpmNsLMFpnZUjMbV8X6Lmb2mpnNM7M3zSw3Zt35ZrYkms5PZuUlfWmgM5H0VGvQN7OmwIPAiUBPYLSZ9YwrdjfwZ3fvC0wAfhttuxcwHhgIDADGm1m75FVf0pUGOhNJT4m09AcAS919mbtvA6YAI+PK9ARei16/EbP+BGCGu6939w3ADGDEzldb0p0GOhNJT4kE/U7AZzHzRdGyWHOBM6LXPwZam1n7BLfFzMaaWaGZFeo5uJlBA52JpKdEgr5Vsczj5n8JHG1mHwJHA58DJQlui7tPdPcCdy/o2LFjAlWSdKeBzkTSUyLZO0XAATHzucCq2ALuvgo4HcDMWgFnuPtGMysChsZt++ZO1FcaEQ10JpJ+EmnpzwK6m1k3M2sOjAKmxRYwsw5mVrqvXwOPRa+nA8PNrF10AXd4tExERFKg1qDv7iXAlYRg/TEw1d0XmNkEMzs1KjYUWGRmi4F9gNuibdcDtxJOHLOACdEyERFJAXOv1MWeUgUFBV5YWJjqaoiINCpmNtvdC2orp2EYRESyiIK+iEgWUdAXEckiCvoiIllEQT8DaUhjEamOhlbOMBrSWERqopZ+htGQxiJSEwX9DKMhjUWkJgr6GUZDGotITRT0M4yGNBaRmijoZxgNaSwiNVH2TgbSkMYiUh219EVEsoiCvohIFlHQFxHJIurTF2kAO3bA/Pkwcya0bQu9e8PBB0OzZqmumWQbBX2RXWDbNpg9G95+O0z//Cds2FCxTLNmcMgh4QQQO3XrFsZNEtkVEgr6ZjYCuB9oCjzq7nfEre8MPA7sGZUZ5+4vmVlXwiMWF0VFZ7r7Zcmpukj62LwZ3nuvPMjPnAlbt4Z1Bx8Mp58OQ4bAoEGh7Pz55dPMmTBlSvm+cnKgZ8/KJ4P99w9puCI7o9agb2ZNgQeB44EiYJaZTXP3hTHFbiY8O/chM+sJvAR0jdZ94u79klttkdRatw7eeac8yM+eDdu3hxZ6v35hkLshQ2DwYNhnn8rb5+VVnN+0CRYuDCeBBQvCz+nTYdKk8jKl3ULxU4cOu/SjSoZJpKU/AFjq7ssAzGwKMBKIDfoOtIletwVWJbOS0nht3hzG/enUCdq0qb18uvrss/IA/9ZbIUAD7L47DBgAv/pVCPI//GH9Pmfr1jBwYJhirVtXfhIonaZOhYcfLi+zzz6VTwQ9ezbu4y27TiJBvxPwWcx8ERD3p8ktwN/N7CqgJXBczLpuZvYh8DVws7u/Hf8GZjYWGAvQOQMGiVm3Dtq3T3UtUmvHDvjzn2HcOFi9Oixr0wYOOKDmaY89UltvAHdYtCgE99JA/+mnYV3r1qGLZsyYEOQPPxxatNh1dWnfHo46Kkyx9fvii/KTQOlJ4dFHw0m2VJcu0KtXxZPBoYemxzGW1DF3r7mA2VnACe5+STT/E2CAu18VU+a6aF+/M7MjgT8CvYFmQCt3X2dmhwHPAb3c/evq3q+goMALCwt39nOlzOuvw7BhMGIE3HVX+EfLNrNmwVVXwfvvh5brZZdBcXFoLcdOa9ZU3rZ9+5pPCp06QfPmya1vSQnMmVMe4N95J9QXYO+9Q3AfMiQE3r59oWnT5L5/suzYEU5Osd8K5s+Hf/87XFiG0P30gx+Ek0GnTuHzVTW1aaPrB42Nmc1294LayiXS0i8CDoiZz6Vy983FwAgAd3/PzFoAHdx9DfBdtHy2mX0CHAw03qhei4cfDq3BmTNDv+3FF8OECbDvvqmu2a63Zg3ceCM89lgIHJMmwU9+Un0myrffwuefVz4ZfPZZCF7vvFM548UsdGfUdGLYb7+aA/PWrfDBB+VB/t134Ztvwrpu3eDEE0OAHzIEundvPMGvSZNQ/27d4JRTypd//z0sXVrxm8HChfDmm5WPb6nmzaFjx+pPCvHTrvy2I8mVSEt/N2AxMAz4HJgFnOvuC2LKvAz81d0nmVkP4DVCt1AHYL27bzezA4G3gT7uvr6692vMLf0NG0Jwv+wy+I//gFtvhQcfDP8Qv/oVXHdd5REwM8H338P//A+MHx+6F665Bn7zm3DhcWd98w0UFVU+KaxcWf46tksDQsDv1KnyyWDVqhDkZ80qb/n26VPekh8yJGyXTbZtg7Vrwwk7kak0Iyle69aJnyDat0/fb0uNWaIt/VqDfrSzk4D7COmYj7n7bWY2ASh092lRxs4jQCvCRd0b3P3vZnYGMAEoAbYD4939hZreqzEH/YcegiuugH/9C/r3D8uWLAkB/9lnITc3DHF83nmZk4f9+utw9dWh9Xj88XD//dCjR8O9vzt89VXV3xZKp6Ii+O472G03KCgoD/CDBsFeezVcXRs793CCLS5O7ARRXBwymuKZhYyjvfcOP1u1gpYtw5STU/66LpNuckty0G9IjTnoDxwYuizmzKncJfDWW3D99VBYCPn58LvfwdChKalmUqxcGT7P00+Hh6/fey+MHJmeXSHuIQC1apWZ37TS1Y4d4dtvTSeGtWvDt7nNmytOpd/EEtWsWf1OFqVT27bhPohOnWDPPdPz77g2yezTlwQsXBj6ie+5p+o/mKOOChc2p0yBX/8ajjkm9LveeWfIqGgstm4NF6jviG7PmzABfvnL9M4IMQutSmlYTZqErpz27ev+7a+kJDzbOf5kUNdpw4bwTS92WfwzpOPtsUf5CaD0Z+kUu3z33et/bFJJLf0k+dWvQsD//PPaA8zWraEb5Pbbwx/gZZeF/vCOHRumrvXhDs89F65LrFgBZ50Vgn+XLqmumUjd7NgR/gfjTw6rVoXp88/DFPv6228r76d9+8ong/jXHTo0XFeuuncaUElJeAbt4YfD888nvt2aNfCf/xkyflq2DJkv11yTfpkQH38c6jVjRkj1e+ABOPbYVNdKpGG4l58UqjohlL5evTqUjdWsWcgmq+3k0LLlztdTQb8BvfwynHQS/O1v8OMf1337jz+GG26AF18MLeff/hZGjUp9v+LXX4eT0gMPhD/KCRPg8st10UykKt9/HwJ/6cmgupPDpk2Vt23TJgT/QYPgkUfq9/7q029AkyaFr3o/+lH9tu/RA154IWTCXH89nHsu3HdfuNg7eHBSq5qQ2Ltp16wJ9xrcdpv6xUVq0qxZyNDLza253KZN1X9raIhrYwr6O2nDhtDXfdllO3+n6LHHhoG7/vIXuOmmkFZ4+unw3/8d7qJsCIWF4W7amTNDNtILL4RuKxFJjtatw5DahxySmvfPkGzx1JkyJaSXXXBBcvbXpAmcfz4sXhy6U6ZPD4NnXXstrK/2lradt2YNXHJJGDxs+fLw7eXddxXwRTKNgv5OmjQpjMfSrx9Mnhxy1ps0CT8nT67/fnNywl2tS5aEE8oDD8BBB4UMoe++S07dIVyEfuCBMOb744+H7JxFi8KJJ1NuIBORcvq33gmlufkXXABPPhnGUP/003AF/9NPw/zOBH4IV/4nTgw3fA0cGPr8e/YMN0Xt7DX4N94IJ6trrgkt/Hnz4O67kzN8goikJwX9nfD44+HW/jFjQh98/E0fW7aE5cnQpw+88kqYcnJCnvyQIeGGr7pauRLOPjtcQ9i8OQwRMX16ww6fICKpoaBfTyUl4YLrSSeFrJaVK6suV93y+jrhhNDqf+QR+OQTOOKIkN65fHnt227dGq4THHpoSA+dMCF8WznttNSnh4pIw1DQr6cZM8KDLC68MMxX9+yXXfFMmKZNw0XXJUtCv/+0aSGQ33BDGHwsXundtD17hjt/Tz453Bvwm9+k9/AJIpJ8Cvr1NGlSuMX6pJPC/G23VR7MKycnLN9VWrUKrfXFi0Nu/913h9TO3/8+3CgC4QEaI0aEm8ZatoTXXguP29PwCSLZSUG/Hkpz88eMKc/NHzMmXHDt0iV0lXTpEubHjNn19cnNhT/9KeT45+WFoY579w73DvTpE/r97795myFnAAANrUlEQVQfPvxQwyeIZDsF/XqoLjd/zJgwGNmOHeFnQwT8WP37w6uvhhuqmjQJJ53SnP+rr9bwCSKisXfqZeDAkCs/Z06qa1K9kpIwdo4eEiKSHRIde0ct/TqKzc1PZ7vtpoAvIpUlFPTNbISZLTKzpWY2ror1nc3sDTP70MzmRY9XLF3362i7RWZ2QjIrnwqlufnnnpvqmoiI1F2tA66ZWVPgQeB4oAiYZWbT3H1hTLGbganu/lD0vNyXgK7R61FAL2B/4FUzO9jdq3hyZvorzc3/0Y804qSINE6JtPQHAEvdfZm7bwOmACPjyjjQJnrdFlgVvR4JTHH379x9ObA02l+jVJqbn+5dOyIi1Ukk6HcCPouZL4qWxboFOM/Migit/KvqsC1mNtbMCs2ssLi4OMGqN7z43HwRkcYmkaBf1Q368Sk/o4FJ7p4LnAT8xcyaJLgt7j7R3QvcvaBjmj4otqrcfBGRxiaRh6gUAQfEzOdS3n1T6mJgBIC7v2dmLYAOCW7bKDz1VHLHzRcRSYVEWvqzgO5m1s3MmhMuzE6LK7MSGAZgZj2AFkBxVG6Ume1uZt2A7sAHyap8Q5o0Kdzt2q9fqmsiIlJ/tbb03b3EzK4EpgNNgcfcfYGZTQAK3X0acD3wiJldS+i+ucDDXV8LzGwqsBAoAX7eGDN3FiyAWbPg3ntTXRMRkZ2jO3ITcMMNIeB//rlSNUUkPemO3CRRbr6IZBIF/Vr8/e/w5Ze6gCsimUFBvxbKzReRTKKgX4P16+H555WbLyKZQ0G/BtWNmy8i0lgp6NdAufkikmkU9KtRmpuvVr6IZBIF/Wpo3HwRyUQK+lVQbr6IZCoF/SooN19EMpWCfhWUmy8imUpBP45y80Ukkynox1FuvohkMgX9OMrNF5FMpqAfQ7n5IpLpFPRjKDdfRDKdgn5Eufkikg0SCvpmNsLMFpnZUjMbV8X6e81sTjQtNrOvYtZtj1kX/2zdtKHcfBHJBrU+I9fMmgIPAscDRcAsM5vm7gtLy7j7tTHlrwL6x+xiq7un/WVR5eaLSDZIpKU/AFjq7svcfRswBRhZQ/nRwFPJqFxDUW6+iGSLRIJ+J+CzmPmiaFklZtYF6Aa8HrO4hZkVmtlMMzutmu3GRmUKi4uLE6x68ig3X0SyRSJB36pY5tWUHQU87e7bY5Z1jp7Qfi5wn5kdVGln7hPdvcDdCzp27JhAlZJr0qSQl6/cfBHJdIkE/SLggJj5XGBVNWVHEde14+6rop/LgDep2N+fcsrNF5FskkjQnwV0N7NuZtacENgrZeGY2SFAO+C9mGXtzGz36HUHYBCwMH7bVFJuvohkk1qzd9y9xMyuBKYDTYHH3H2BmU0ACt299AQwGpji7rFdPz2Ah81sB+EEc0ds1k+qlebmn3wypKBXSUSkwdUa9AHc/SXgpbhl/xE3f0sV270L9NmJ+u1Sys0XkWyT1XfkTpoUWvjKzReRbJG1QT82N79Zs1TXRkSkYWRt0Fduvohko6wN+qW5+Xl5qa6JiEjDycqgr9x8EclWWRn0lZsvItkq64K+cvNFJJtlXdCfPl25+SKSvbIu6Cs3X0SyWVYF/XXrYNo05eaLSPbKqqCv3HwRyXZZFfSVmy8i2S5rgv78+VBYqFa+iGS3rAn6ys0XEcmSoK/cfBGRICuC/vTpsHq1unZERLIi6Cs3X0QkSCjom9kIM1tkZkvNbFwV6+81sznRtNjMvopZd76ZLYmm85NZ+UQoN19EpFytj0s0s6bAg8DxQBEwy8ymxT7r1t2vjSl/FdA/er0XMB4oAByYHW27IamfogbKzRcRKZdIS38AsNTdl7n7NmAKMLKG8qOBp6LXJwAz3H19FOhnACN2psJ1pdx8EZFyiQT9TsBnMfNF0bJKzKwL0A14vS7bmtlYMys0s8Li4uJE6p0Q5eaLiFSUSNC3KpZ5NWVHAU+7+/a6bOvuE929wN0LOiYxp1K5+SIiFSUS9IuAA2Lmc4FV1ZQdRXnXTl23TSrl5ouIVJZI0J8FdDezbmbWnBDYp8UXMrNDgHbAezGLpwPDzaydmbUDhkfLdjnl5ouIVFZr9o67l5jZlYRg3RR4zN0XmNkEoNDdS08Ao4Ep7u4x2643s1sJJw6ACe6+PrkfoWrKzRcRqcxiYnRaKCgo8MLCwp3ax7p1sP/+cMUVcO+9SaqYiEgaM7PZ7l5QW7mMvCNXufkiIlXLyKCv3HwRkaplXNBXbr6ISPUyLugrN19EpHoZFfSVmy8iUrOMCvqlufkXXpjqmoiIpKeMCvqlufknnpjqmoiIpKeMCfql4+afd57GzRcRqU6td+Q2Fk2awPjxMLKmQZ9FRLJcxgT9du3gxhtTXQsRkfSWMd07IiJSOwV9EZEsoqAvIpJFFPRFRLKIgr6ISBZR0BcRySIK+iIiWSShoG9mI8xskZktNbNx1ZQ528wWmtkCM3syZvl2M5sTTZWerSsiIg2n1puzzKwp8CBwPFAEzDKzae6+MKZMd+DXwCB332Bme8fsYqu790tyvUVEpB4SaekPAJa6+zJ33wZMAeIHO7gUeNDdNwC4+5rkVlNERJIhkaDfCfgsZr4oWhbrYOBgM/unmc00sxEx61qYWWG0/LSq3sDMxkZlCouLi+v0AUREJHGJjL1jVSzzKvbTHRgK5AJvm1lvd/8K6Ozuq8zsQOB1M/vI3T+psDP3icBEgIKCgvh9i4hIkiTS0i8CDoiZzwVWVVHmeXf/3t2XA4sIJwHcfVX0cxnwJtB/J+ssIiL1lEjQnwV0N7NuZtYcGAXEZ+E8BxwDYGYdCN09y8ysnZntHrN8ELAQERFJiVq7d9y9xMyuBKYDTYHH3H2BmU0ACt19WrRuuJktBLYD/8fd15nZD4GHzWwH4QRzR2zWj4iINCxzT68u9IKCAi8sLEx1NUREGhUzm+3uBbWV0x25IiJZREFfRCSLKOiLiGQRBX0RkSyioC8ikkUU9EVEsoiCvohIFlHQFxHJIgr6IiJZREFfRCSLKOiLiGSRjAn6kydD167QpEn4OXlyqmskIpJ+EnmIStqbPBnGjoUtW8L8p5+GeYAxY1JXLxGRdJMRLf2bbioP+KW2bAnLRUSkXEYE/ZUr67ZcRCRbZUTQ79y5bstFRLJVRgT9226DnJyKy3JywnIRESmXUNA3sxFmtsjMlprZuGrKnG1mC81sgZk9GbP8fDNbEk3nJ6viscaMgYkToUsXMAs/J07URVwRkXi1Pi7RzJoCi4HjgSLCg9JHxz7r1sy6A1OBY919g5nt7e5rzGwvoBAoAByYDRzm7huqez89LlFEpO6S+bjEAcBSd1/m7tuAKcDIuDKXAg+WBnN3XxMtPwGY4e7ro3UzgBGJfggREUmuRIJ+J+CzmPmiaFmsg4GDzeyfZjbTzEbUYVvMbKyZFZpZYXFxceK1FxGROkkk6FsVy+L7hHYDugNDgdHAo2a2Z4Lb4u4T3b3A3Qs6duyYQJVERKQ+Egn6RcABMfO5wKoqyjzv7t+7+3JgEeEkkMi2IiLSQBIJ+rOA7mbWzcyaA6OAaXFlngOOATCzDoTunmXAdGC4mbUzs3bA8GiZiIikQK1j77h7iZldSQjWTYHH3H2BmU0ACt19GuXBfSGwHfg/7r4OwMxuJZw4ACa4+/qa3m/27NlrzezT+n+ktNABWJvqSqQRHY+KdDzK6VhUtDPHo0sihWpN2ZS6M7PCRFKnsoWOR0U6HuV0LCpqiOOREXfkiohIYhT0RUSyiIL+rjEx1RVIMzoeFel4lNOxqGiXHw/16YuIZBG19EVEsoiCvohIFlHQTyIzO8DM3jCzj6Mhpq9JdZ1SzcyamtmHZvZiquuSama2p5k9bWb/jv5Gjkx1nVLJzK6N/k/mm9lTZtYi1XVqSGb2mJmtMbP5Mcv2MrMZ0VD0M6KbWpNKQT+5SoDr3b0HcATwczPrmeI6pdo1wMeprkSauB94xd0PBfLI4uNiZp2Aq4ECd+9NuPFzVGpr1eAmUXnU4XHAa+7eHXgtmk8qBf0kcvcv3P1f0etNhH/qSqOKZgszywV+BDya6rqkmpm1AY4C/gjg7tvc/avU1irldgP2MLPdgByybFwud38LiB+hYCTwePT6ceC0ZL+vgv4uYmZdgf7A+6mtSUrdB9wA7Eh1RdLAgUAx8Keou+tRM2uZ6kqlirt/DtwNrAS+ADa6+99TW6u0sI+7fwGhEQnsnew3UNDfBcysFfAM8At3/zrV9UkFMzsZWOPus1NdlzSxG5APPOTu/YHN7IKv7o1F1Fc9EugG7A+0NLPzUlur7KCgn2Rm1owQ8Ce7+99SXZ8UGgScamYrCE9bO9bMnkhtlVKqCChy99Jvfk8TTgLZ6jhgubsXu/v3wN+AH6a4TulgtZntBxD9XFNL+TpT0E8iMzNCn+3H7n5PquuTSu7+a3fPdfeuhAt0r7t71rbk3P1L4DMzOyRaNAxYWMMmmW4lcISZ5UT/N8PI4gvbMaYB50evzweeT/Yb1Dq0stTJIOAnwEdmNidadqO7v5TCOkn6uAqYHD2XYhlwYYrrkzLu/r6ZPQ38i5D19iFZNiSDmT1FeNpgBzMrAsYDdwBTzexiwonxrKS/r4ZhEBHJHureERHJIgr6IiJZREFfRCSLKOiLiGQRBX0RkSyioC8ikkUU9EVEssj/B4JVJmjjuQ1DAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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qxYZGRlMnTqVN954g8svvxwIU+rNmjVLV7JKlVNdx9ur5R6nSZMm9OjRg1dffRUIrfZzzz0XM6Nu3bo8++yzzJ8/n5kzZ3L11VcXW9zrwQcfpH79+uTk5HDdddcVGLM+btw4srOzycnJ4Y033iAnJ4fLLruMAw88kJkzZzJz5swC+5o3bx6TJ09mzpw5vPPOO/ztb3/jvffeA0IRs5EjR7Jw4UIaN27MM888U+xzvOCCC7jtttvIycnh8MMP56abbgJCCeP33nuPnJycnWWNx48fz4QJE1iwYAFvvvlmsR8aIqmquo63T9mWe3Et7Iq0o2umf//+TJ06dWdr2d259tprmTVrFjVq1OCzzz7jyy+/pHnz5kXuZ9asWVx22WUAdOrUiU6dOu2876mnnmLixInk5+fz+eefs2jRogL3FzZ79mzOOOOMnZUpzzzzTN5880369etH69at6dKlC1B8WWEI9eXXrVtH7969AfjVr37F2WefvTPGoUOHMmDAAAYMGABAz549ueqqqxg6dChnnnkmLVu2TOQlFEkpP/1p6Iopan06U8u9kAEDBvDaa68xf/58Nm/evHOSjKysLPLy8pg3bx4LFixg//33L7LMbzyz3aef/fTTTxk/fjyvvfYaOTk5nHrqqSXup7hvCDvKBUPxZYVL8tJLLzFy5EjmzZtH9+7dyc/PZ8yYMTzyyCNs3ryZI488ko8++qhM+xaJUiqNt6/ME7tK7oU0aNCA4447josuuqjAidT169ez3377Ubt2bWbOnMnKopoCcY499tidk2B/+OGH5OTkAKFc8N57702jRo348ssveeWVV3Y+pmHDhmzYsKHIfT333HNs2rSJ77//nmeffZZjjjmm1M+tUaNG7Lvvvrz55psAPPbYY/Tu3Zvt27ezevVqjj/+eG6//XbWrVvHxo0b+eSTTzj88MO55ppryMzMVHKXKilVxttX9ondlO2WidLgwYM588wzC4ycGTp0KKeffjqZmZl06dKFww47rNh9XHrppVx44YV06tSJLl260KNHDyDMqtS1a1c6dOiwW7ngESNG0LdvXw444IAC/e7dunVj2LBhO/cxfPhwunbtWmwXzJ784x//2HlCtU2bNkyePJlt27Zx3nnnsX79etydK6+8ksaNG/OnP/2JmTNnUrNmTTIyMnbOKiVS1aTCePvKPrGrkr9SLnrPRBJTo0ZosRdmBtu3J76fREv+qltGRKQSVHYhNSV3EZFKUNkndlMuuUfVTSSlp/dKJHGVfWI3pU6o1q1bl7Vr19KkSZMihxFK6nB31q5dS926daMORaTKqMwTuwkldzPrA9wD1AQecfdbC92/F/B/QHdgLXCuu68obTAtW7YkNzeXvLy80j5UIlC3bl1d2CSSokpM7mZWE5gA/ALIBeaa2TR3XxS32cXAt+7e1swGAbcB55Y2mNq1a9O6devSPkxERApJpM+9B7DM3Ze7+xZgKtC/0Db9gX/Ebj8NnGjqVxERiUwiyb0FsDpuOTe2rsht3D0fWA80KbwjMxthZtlmlq2uFxGRipNIci+qBV54mEQi2+DuE909090zmzVrlkh8IiJSBomcUM0FDopbbgms2cM2uWZWC2gEfFPcTufNm/e1mRVfoCX1NQW+jjqIFKLXYxe9FgXp9SioPK/HwYlslEhynwu0M7PWwGfAIGBIoW2mAb8C/gcMBGZ4CYOg3b3KN93NLDuRy4CrC70eu+i1KEivR0GV8XqUmNzdPd/MRgHTCUMhJ7n7QjMbC2S7+zTg78BjZraM0GIfVJFBi4hI8RIa5+7uLwMvF1p3Q9ztH4CzkxuaiIiUVcqVH6hiJkYdQIrR67GLXouC9HoUVOGvR2Qlf0VEpOKo5S4ikoaU3EVE0pCSexmY2UFmNtPMFpvZQjO7POqYomZmNc3sPTN7MepYomZmjc3saTP7KPY3clTUMUXJzK6M/Z98aGZPmFm1KSVqZpPM7Csz+zBu3U/M7D9mtjT2e9+KOLaSe9nkA1e7e3vgSGCkmWVEHFPULgcWRx1EirgHeNXdDwM6U41fFzNrAVwGZLp7R8Jw6uo0VPpRoE+hdWOA19y9HfBabDnplNzLwN0/d/f5sdsbCP+8hevtVBtm1hI4FXgk6liiZmb7AMcSrv3A3be4+7poo4pcLaBe7Or1+ux+hXvacvdZ7H61fnyhxX8AAyri2Eru5WRmrYCuwJxoI4nU3cAfgFJM85u22gB5wORYN9UjZrZ31EFFxd0/A8YDq4DPgfXu/u9oo4rc/u7+OYSGIrBfRRxEyb0czKwB8Axwhbt/F3U8UTCz04Cv3H1e1LGkiFpAN+BBd+8KfE8Ffe2uCmL9yf2B1sCBwN5mdl60UVUPSu5lZGa1CYk9y93/FXU8EeoJ9DOzFYRa/yeY2ePRhhSpXCDX3Xd8k3uakOyrq5OAT909z923Av8Cjo44pqh9aWYHAMR+f1URB1FyL4PYRCR/Bxa7+51RxxMld/+ju7d091aEE2Uz3L3atszc/QtgtZkdGlt1IrComIeku1XAkWZWP/Z/cyLV+ARzzI5Ci8R+P18RB0mpCbKrkJ7A+cAHZrYgtu7aWA0ekdFAlpnVAZYDF0YcT2TcfY6ZPQ3MJ4wye49qVIrAzJ4AjgOamlku8GfgVuApM7uY8OFXIXW5VH5ARCQNqVtGRCQNKbmLiKQhJXcRkTSk5C4ikoaU3EVE0pCSu4hIGlJyFxFJQ/8fBd/g8eKO7+8AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "acc = history.history['acc']\n", "val_acc = history.history['val_acc']\n", "loss = history.history['loss']\n", "val_loss = history.history['val_loss']\n", "\n", "epochs = range(1, len(acc) + 1)\n", "\n", "plt.plot(epochs, acc, 'bo', label='Training acc')\n", "plt.plot(epochs, val_acc, 'b', label='Validation acc')\n", "plt.title('Training and validation accuracy')\n", "plt.legend()\n", "\n", "plt.figure()\n", "\n", "plt.plot(epochs, loss, 'bo', label='Training loss')\n", "plt.plot(epochs, val_loss, 'b', label='Validation loss')\n", "plt.title('Training and validation loss')\n", "plt.legend()\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "3장에서 이 데이터셋을 사용한 첫 번째 모델에서 얻은 테스트 정확도는 87%였습니다. 안타깝지만 간단한 순환 네트워크는 이 기준 모델보다 성능이 높지 않습니다(85% 정도의 검증 정확도를 얻었습니다). 이런 원인은 전체 시퀀스가 아니라 처음 500개의 단어만 입력에 사용했기 때문입니다. 이 RNN은 기준 모델보다 얻은 정보가 적습니다. 다른 이유는 `SimpleRNN`이 텍스트와 같이 긴 시퀀스를 처리하는데 적합하지 않기 때문입니다. 더 잘 작동하는 다른 순환 층이 있습니다. 조금 더 고급 순환 층을 살펴보죠." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[...]\n", "\n", "## 케라스를 사용한 LSTM 예제\n", "\n", "이제 실제적인 관심사로 이동해 보죠. LSTM 층으로 모델을 구성하고 IMDB 데이터에서 훈련해 보겠습니다(그림 6-16과 6-17 참조). 이 네트워크는 조금 전 `SimpleRNN`을 사용했던 모델과 비슷합니다. LSTM 층은 출력 차원만 지정하고 다른 (많은) 매개변수는 케라스의 기본값으로 남겨 두었습니다. 케라스는 좋은 기본값을 가지고 있어서 직접 매개변수를 튜닝하는 데 시간을 쓰지 않고도 거의 항상 어느정도 작동하는 모델을 얻을 수 있습니다." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 20000 samples, validate on 5000 samples\n", "Epoch 1/10\n", "20000/20000 [==============================] - 72s 4ms/step - loss: 0.5098 - acc: 0.7607 - val_loss: 0.3865 - val_acc: 0.8426\n", "Epoch 2/10\n", "20000/20000 [==============================] - 72s 4ms/step - loss: 0.2890 - acc: 0.8881 - val_loss: 0.3126 - val_acc: 0.8628\n", "Epoch 3/10\n", "20000/20000 [==============================] - 72s 4ms/step - loss: 0.2334 - acc: 0.9099 - val_loss: 0.3473 - val_acc: 0.8748\n", "Epoch 4/10\n", "20000/20000 [==============================] - 72s 4ms/step - loss: 0.1988 - acc: 0.9259 - val_loss: 0.5105 - val_acc: 0.8396\n", "Epoch 5/10\n", "20000/20000 [==============================] - 72s 4ms/step - loss: 0.1791 - acc: 0.9357 - val_loss: 0.3094 - val_acc: 0.8860\n", "Epoch 6/10\n", "20000/20000 [==============================] - 72s 4ms/step - loss: 0.1538 - acc: 0.9442 - val_loss: 0.3092 - val_acc: 0.8884\n", "Epoch 7/10\n", "20000/20000 [==============================] - 72s 4ms/step - loss: 0.1429 - acc: 0.9492 - val_loss: 0.4297 - val_acc: 0.8772\n", "Epoch 8/10\n", "20000/20000 [==============================] - 72s 4ms/step - loss: 0.1313 - acc: 0.9534 - val_loss: 0.3242 - val_acc: 0.8802\n", "Epoch 9/10\n", "20000/20000 [==============================] - 72s 4ms/step - loss: 0.1174 - acc: 0.9594 - val_loss: 0.3437 - val_acc: 0.8886\n", "Epoch 10/10\n", "20000/20000 [==============================] - 72s 4ms/step - loss: 0.1116 - acc: 0.9607 - val_loss: 0.3777 - val_acc: 0.8830\n" ] } ], "source": [ "from keras.layers import LSTM\n", "\n", "model = Sequential()\n", "model.add(Embedding(max_features, 32))\n", "model.add(LSTM(32))\n", "model.add(Dense(1, activation='sigmoid'))\n", "\n", "model.compile(optimizer='rmsprop',\n", " loss='binary_crossentropy',\n", " metrics=['acc'])\n", "history = model.fit(input_train, y_train,\n", " epochs=10,\n", " batch_size=128,\n", " validation_split=0.2)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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J1P74osvuPzyy6levTo1atTgiiuu4PPPPwegSZMmtG3bFih6+maAXbt2sXPnTrp27QrAwIEDmTdvXn6M/fv3Z/r06fkjfzt37syIESOYNGkSO3fuDPuIYCvpm1Jbvhw+/RTGjoWkpJIde/LJ0KGDq+K5446IhGdKoagSeSRddtlljBgxgsWLF7Nv3778EvqMGTPIzs5m0aJFVKpUiZSUlKDTKQcK9i3g+++/Z/z48SxcuJDatWszaNCgYs9T1GwFedMyg5uaubjqnaN59913mTdvHrNnz+bhhx9m+fLljBo1ih49evDee+/RqVMnPvroI5o3b16q8wdjJX1Tas88A5Urw+DBpTv+6qth4UJYvz68cZnyp0aNGpx77rn86U9/KtCAu2vXLo4//ngqVarE3Llz2bBhQ5HnOeecc/IXP//2229ZtmwZ4KZlrl69OrVq1eKnn37i/fffzz+mZs2aQevNzznnHN5880327t3Lnj17eOONNzj77LNL/Nxq1apF7dq1878lvPTSS3Tt2pXc3Fw2bdrEeeedx+OPP87OnTvZvXs369at4/TTT2fkyJGkpqayatWqEl+zKFbSN6Xyyy/wz3+6aprSLoFw9dUwciT8+9/ut0ls/fr144orrijQk6d///707NmT1NRU2rZtW2yJ9+abb+b666+ndevWtG3blo4dOwJuFax27drRsmXLI6ZlHjJkCJdccgknnngic+fOzd/evn17Bg0alH+OG264gXbt2hVZlXM0L774IkOHDmXv3r00bdqUF154gUOHDjFgwAB27dqFqnL77bdz3HHHcd999zF37lySkpJo0aJF/ipg4WITrplSSU+H4cNh/nw488zSn6dTJ7es4uLF4YvNlIxNuFb+2IRrJqry5tlJTQWvEFRqaWlu9s01a8ITmzGmaJb0TYl9+imsXFn8PDuhuOoq99v67BsTHZb0TYmlp0OdOoe7XZZFcjJ06WJJ32+xVs1rjq6s71VISV9EuovIahFZKyKjitivj4ioiKR691NEZJ+ILPV+ni1TtMZ3WVlundvBg+GYY8JzzrQ0+PZbKKbbtImQqlWrsm3bNkv85YCqsm3btjIN2Cq2946IJAHpwIW4hc4XishsVV1RaL+awK3AV4VOsU5V25Y6QhNTpk51UyPffHP4ztmnD9x6qyvtP/RQ+M5rQpOcnExWVhbZ2dl+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XNm4EW6+2a0fPW0aXH+9m9RuypTyn+zzFfdVALgKmBZw/1rg6SL2vwZ40btdBajr3e6A+/A4tqjr+VG9E2jlStV69VQbN3Yt9OVJbq7qu++qdujgqjpOP111716/o4qerCxVEdUxY/yOpOwGDHA9QzIz/Y6kbNLSXNXIihV+R1K0zEw3bqdSJfczdGj56wJMGKt3soCGAfeTgc1F7D8TuMz7QNmvqtu824twbQMxPSa0eXNX1bNtmyvxb9/ud0TFU3XfUv7wBze30PbtbqGUxYvhmGP8ji56GjSALl3KfxXPggWuAXfEiPI/ZXEsL7iycaMrwffu7UbLPv883HCDK9lPngyNGvkdYYQU96kAVATWA0043JDbstA+zQJu98T7xAHqA0ne7abAD0Cdoq7nd0k/z8cfuxJKp06uQS1WffKJapcurmTfsKHq1KludGSievpp91p8+63fkZRObq5q586qv/ud62AQD/75T/eeTJrkbxy//ab60Ueqd9yh2qKFiwnct/q//KX8lewLI5yDs4BLge9wJfV7vG1jgF7e7aeA5cBSYG7ehwJwpbf9a2Ax0LO4a8VK0ldVfe011wPh4otV9+/3O5qCPv/cjbQF18MjPd39USe6LVvce3bffX5HUjr/+pd7T597zu9Iwic3V7V7d9Xq1aNfXbVhg+qzz6r26uWuD6765vzzVZ94wlU7xctULGFN+tH8iaWkr6o6bZp7ldLSYmMagy+/VL3wQhfT736n+tRTqvv2+R1VbDnvPNXf/778/TPv26eakuLmEoqFv7VwysxUrVHDFaAi+b7s33/00vzQoapvvaX666+Ru76fLOmH0d/+5l6poUP9SyQLFqhecomLo3591fHjVffs8SeWWPfss+51WrLE70hKZuxYF/fHH/sdSWTkVb29+GJ4z5tXmu/d232wBJbmx4+Pr9J8USzph1nenCLRrjZYssR9NQXVOnVUH3ssfksq4ZKd7eZDGTXK70hC9+OPqjVruvc6Xh065Noratd2z7e09u93H4x33lmwNN+oUfyX5otiST/McnNVBw92r9jEiZG/3jffqF5xhbveccepPvyw6q5dkb9uvLjoItWmTctPCe/GG92Iz9Wr/Y4kslaudB0krr66ZMcVV5pfvrz8vNeRYkk/Ag4eVL38cveqvfRSZK6xYoVrPxBRPfZY1QceSMz5ycvq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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "acc = history.history['acc']\n", "val_acc = history.history['val_acc']\n", "loss = history.history['loss']\n", "val_loss = history.history['val_loss']\n", "\n", "epochs = range(1, len(acc) + 1)\n", "\n", "plt.plot(epochs, acc, 'bo', label='Training acc')\n", "plt.plot(epochs, val_acc, 'b', label='Validation acc')\n", "plt.title('Training and validation accuracy')\n", "plt.legend()\n", "\n", "plt.figure()\n", "\n", "plt.plot(epochs, loss, 'bo', label='Training loss')\n", "plt.plot(epochs, val_loss, 'b', label='Validation loss')\n", "plt.title('Training and validation loss')\n", "plt.legend()\n", "\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.6" } }, "nbformat": 4, "nbformat_minor": 2 }