Ce serveur Gitlab sera éteint le 30 juin 2020, pensez à migrer vos projets vers les serveurs gitlab-research.centralesupelec.fr et gitlab-student.centralesupelec.fr !

Spectrum_Keras.ipynb 69.1 KB
Newer Older
Hachemin Pierre-Yves's avatar
Hachemin Pierre-Yves committed
1 2 3
{
 "cells": [
  {
SoleneDc's avatar
SoleneDc committed
4
   "cell_type": "markdown",
Hachemin Pierre-Yves's avatar
Hachemin Pierre-Yves committed
5 6
   "metadata": {},
   "source": [
SoleneDc's avatar
SoleneDc committed
7
    "# 1. CNN"
Hachemin Pierre-Yves's avatar
Hachemin Pierre-Yves committed
8 9 10
   ]
  },
  {
SoleneDc's avatar
SoleneDc committed
11
   "cell_type": "markdown",
Hachemin Pierre-Yves's avatar
Hachemin Pierre-Yves committed
12 13
   "metadata": {},
   "source": [
SoleneDc's avatar
SoleneDc committed
14
    "## Récupération des genres"
Hachemin Pierre-Yves's avatar
Hachemin Pierre-Yves committed
15 16 17
   ]
  },
  {
SoleneDc's avatar
SoleneDc committed
18 19
   "cell_type": "markdown",
   "metadata": {},
Hachemin Pierre-Yves's avatar
Hachemin Pierre-Yves committed
20
   "source": [
SoleneDc's avatar
SoleneDc committed
21
    "Permet de récupérer les labels qui seront mis dans une array"
Hachemin Pierre-Yves's avatar
Hachemin Pierre-Yves committed
22 23
   ]
  },
Hachemin Pierre-Yves's avatar
Hachemin Pierre-Yves committed
24 25
  {
   "cell_type": "code",
SoleneDc's avatar
SoleneDc committed
26
   "execution_count": 55,
Hachemin Pierre-Yves's avatar
Hachemin Pierre-Yves committed
27
   "metadata": {},
SoleneDc's avatar
SoleneDc committed
28
   "outputs": [],
Hachemin Pierre-Yves's avatar
Hachemin Pierre-Yves committed
29
   "source": [
SoleneDc's avatar
SoleneDc committed
30 31
    "import ast\n",
    "import pandas as pd\n",
Hachemin Pierre-Yves's avatar
Hachemin Pierre-Yves committed
32 33 34
    "from __future__ import absolute_import\n",
    "from __future__ import division\n",
    "from __future__ import print_function\n",
SoleneDc's avatar
SoleneDc committed
35
    "from keras.preprocessing.sequence import pad_sequences\n",
Hachemin Pierre-Yves's avatar
Hachemin Pierre-Yves committed
36 37 38 39 40 41 42 43 44
    "import argparse\n",
    "import sys\n",
    "import numpy as np\n",
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.image as mpimg\n",
    "import tensorflow as tf\n",
    "import os\n",
    "import cv2\n",
SoleneDc's avatar
SoleneDc committed
45
    "from math import floor"
SoleneDc's avatar
SoleneDc committed
46 47 48 49
   ]
  },
  {
   "cell_type": "code",
SoleneDc's avatar
SoleneDc committed
50
   "execution_count": 56,
SoleneDc's avatar
SoleneDc committed
51
   "metadata": {},
SoleneDc's avatar
SoleneDc committed
52
   "outputs": [],
SoleneDc's avatar
SoleneDc committed
53
   "source": [
SoleneDc's avatar
SoleneDc committed
54 55 56 57
    "list_of_eligible_spectrums = []\n",
    "for file in os.listdir(\"SpectrumImages2005\"):\n",
    "    if str(file)[-4:] == '.jpg':\n",
    "        list_of_eligible_spectrums += [file]"
SoleneDc's avatar
SoleneDc committed
58 59 60 61
   ]
  },
  {
   "cell_type": "code",
SoleneDc's avatar
SoleneDc committed
62
   "execution_count": 57,
SoleneDc's avatar
SoleneDc committed
63 64 65 66
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_genre_from_link():\n",
SoleneDc's avatar
SoleneDc committed
67
    "    path = \"./Link-dictionaries/Link-dictionary2005.txt\"\n",
SoleneDc's avatar
SoleneDc committed
68 69 70 71 72 73
    "    file = open(path, \"r\").read()\n",
    "    dictyear = ast.literal_eval(file)\n",
    "    dict_inverse = {}\n",
    "    links_to_be_removed = []\n",
    "    for movie_id in dictyear.keys():\n",
    "        if dictyear[movie_id][1] != []:\n",
SoleneDc's avatar
SoleneDc committed
74
    "            dict_inverse[str(dictyear[movie_id][2])] = dictyear[movie_id][1][0]\n",
SoleneDc's avatar
SoleneDc committed
75 76 77 78 79 80 81 82
    "        else:\n",
    "            #print(f'careful, link {dictyear[movie_id][2]} needs to be removed from the list')\n",
    "            links_to_be_removed += [dictyear[movie_id][2]]\n",
    "    return dict_inverse, links_to_be_removed\n",
    "\n",
    "\n",
    "def get_output_list(L):\n",
    "    dict_inverse, links_to_be_removed = get_genre_from_link()\n",
SoleneDc's avatar
SoleneDc committed
83
    "    eligible_links = []\n",
SoleneDc's avatar
SoleneDc committed
84 85
    "    output = []\n",
    "    for link in L:\n",
SoleneDc's avatar
SoleneDc committed
86 87
    "        link = str(link)\n",
    "        #print(dict_inverse[str(link)])\n",
SoleneDc's avatar
SoleneDc committed
88
    "        if link[-1]==\".\":\n",
SoleneDc's avatar
SoleneDc committed
89 90 91 92 93
    "            print(\"do something! Too many points.......\")\n",
    "        if link[:-4] not in links_to_be_removed:\n",
    "            output += [dict_inverse[link[:-4]]]\n",
    "            eligible_links += [link]\n",
    "    return output, eligible_links\n",
SoleneDc's avatar
SoleneDc committed
94
    "\n",
SoleneDc's avatar
SoleneDc committed
95
    "labels, eligible_links = get_output_list(list_of_eligible_spectrums)"
SoleneDc's avatar
SoleneDc committed
96 97 98 99
   ]
  },
  {
   "cell_type": "code",
SoleneDc's avatar
SoleneDc committed
100
   "execution_count": 58,
SoleneDc's avatar
SoleneDc committed
101 102 103 104 105
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
SoleneDc's avatar
SoleneDc committed
106 107 108 109 110 111 112
       "array([[0, 0, 0, ..., 0, 0, 0],\n",
       "       [0, 0, 0, ..., 0, 0, 0],\n",
       "       [0, 0, 0, ..., 0, 0, 0],\n",
       "       ..., \n",
       "       [0, 0, 0, ..., 0, 0, 0],\n",
       "       [0, 0, 0, ..., 0, 0, 0],\n",
       "       [0, 0, 0, ..., 0, 0, 0]], dtype=uint8)"
SoleneDc's avatar
SoleneDc committed
113 114
      ]
     },
SoleneDc's avatar
SoleneDc committed
115
     "execution_count": 58,
SoleneDc's avatar
SoleneDc committed
116 117 118 119 120
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
SoleneDc's avatar
SoleneDc committed
121 122 123 124 125 126 127 128 129 130
    "trY = pd.get_dummies(labels)\n",
    "trY = trY.values\n",
    "trY"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Bien vérifier la taille des données !"
SoleneDc's avatar
SoleneDc committed
131 132 133 134
   ]
  },
  {
   "cell_type": "code",
SoleneDc's avatar
SoleneDc committed
135
   "execution_count": 59,
SoleneDc's avatar
SoleneDc committed
136 137 138 139 140
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
SoleneDc's avatar
SoleneDc committed
141
       "(1225, 20)"
SoleneDc's avatar
SoleneDc committed
142 143
      ]
     },
SoleneDc's avatar
SoleneDc committed
144
     "execution_count": 59,
SoleneDc's avatar
SoleneDc committed
145 146 147 148 149
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
SoleneDc's avatar
SoleneDc committed
150
    "trY.shape"
SoleneDc's avatar
SoleneDc committed
151 152
   ]
  },
SoleneDc's avatar
SoleneDc committed
153 154 155 156 157 158 159 160 161 162 163 164 165 166
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Extraction des images"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
SoleneDc's avatar
SoleneDc committed
167 168
  {
   "cell_type": "code",
SoleneDc's avatar
SoleneDc committed
169
   "execution_count": 60,
SoleneDc's avatar
SoleneDc committed
170 171 172
   "metadata": {},
   "outputs": [],
   "source": [
SoleneDc's avatar
SoleneDc committed
173 174 175 176 177 178
    "images = []\n",
    "for file in eligible_links:\n",
    "    img = cv2.imread('SpectrumImages2005/' + file, 1)\n",
    "    img = img[0:1]\n",
    "    img = img.reshape((img.shape[1], img.shape[2]))\n",
    "    images += [img]"
SoleneDc's avatar
SoleneDc committed
179 180 181 182
   ]
  },
  {
   "cell_type": "code",
SoleneDc's avatar
SoleneDc committed
183
   "execution_count": 61,
SoleneDc's avatar
SoleneDc committed
184 185 186
   "metadata": {},
   "outputs": [
    {
SoleneDc's avatar
SoleneDc committed
187 188 189 190 191
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "115 299 825\n"
     ]
SoleneDc's avatar
SoleneDc committed
192 193 194
    }
   ],
   "source": [
SoleneDc's avatar
SoleneDc committed
195
    "print(len(images[0]), len(images[1]), len(images[2]))"
SoleneDc's avatar
SoleneDc committed
196 197 198 199
   ]
  },
  {
   "cell_type": "code",
SoleneDc's avatar
SoleneDc committed
200
   "execution_count": null,
SoleneDc's avatar
SoleneDc committed
201 202
   "metadata": {},
   "outputs": [],
SoleneDc's avatar
SoleneDc committed
203 204 205 206 207
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
SoleneDc's avatar
SoleneDc committed
208
   "source": [
SoleneDc's avatar
SoleneDc committed
209
    "## Vérifications des données"
Hachemin Pierre-Yves's avatar
Hachemin Pierre-Yves committed
210 211
   ]
  },
Hachemin Pierre-Yves's avatar
Hachemin Pierre-Yves committed
212 213
  {
   "cell_type": "code",
SoleneDc's avatar
SoleneDc committed
214
   "execution_count": 62,
Hachemin Pierre-Yves's avatar
Hachemin Pierre-Yves committed
215 216 217
   "metadata": {},
   "outputs": [
    {
SoleneDc's avatar
SoleneDc committed
218 219
     "data": {
      "text/plain": [
SoleneDc's avatar
SoleneDc committed
220
       "(1225, 1225)"
SoleneDc's avatar
SoleneDc committed
221 222
      ]
     },
SoleneDc's avatar
SoleneDc committed
223
     "execution_count": 62,
SoleneDc's avatar
SoleneDc committed
224 225 226 227 228
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
SoleneDc's avatar
SoleneDc committed
229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258
    "len(labels), len(images)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "On shuffle les données\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "trX=images\n",
    "p = np.random.permutation(range(len(trX)))#shuffle les données\n",
    "for old_index, new_index in enumerate(p):\n",
    "    trX[new_index] = trX[old_index]\n",
    "    trY[new_index] = trY[old_index]\n",
    "X_test=trX[floor(limit*len(trX))+1:-1]\n",
    "Y_test=trY[floor(limit*len(trY))+1:-1]\n",
    "X_train=trX[:floor(limit*len(trX))]\n",
    "Y_train=trY[:floor(limit*len(trY))]\n",
    "\n",
    "X_train = pad_sequences(X_train)\n",
    "X_test = pad_sequences(X_test)"
SoleneDc's avatar
SoleneDc committed
259 260 261 262
   ]
  },
  {
   "cell_type": "code",
SoleneDc's avatar
SoleneDc committed
263 264 265 266 267 268 269 270 271
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
SoleneDc's avatar
SoleneDc committed
272 273
   "metadata": {},
   "source": [
SoleneDc's avatar
SoleneDc committed
274
    "## Modèle"
SoleneDc's avatar
SoleneDc committed
275 276 277 278
   ]
  },
  {
   "cell_type": "code",
SoleneDc's avatar
SoleneDc committed
279
   "execution_count": 64,
SoleneDc's avatar
SoleneDc committed
280 281 282 283 284 285
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
SoleneDc's avatar
SoleneDc committed
286 287 288 289 290 291
      "Conv1D 1 : (None, 17027, 2)\n",
      "MaxP1D 1 : (None, 8513, 2)\n",
      "Conv1D 2 : (None, 8511, 4)\n",
      "MaxP1D 2 : (None, 4255, 4)\n",
      "Flatten : (None, 17020)\n",
      "Dense  2 : (None, 20)\n"
Hachemin Pierre-Yves's avatar
Hachemin Pierre-Yves committed
292
     ]
SoleneDc's avatar
SoleneDc committed
293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342
    }
   ],
   "source": [
    "from keras.models import Sequential\n",
    "from keras.layers import Dense, Activation\n",
    "from keras.layers import Conv1D, MaxPooling1D\n",
    "from keras.layers import Dropout, Average, BatchNormalization\n",
    "from keras.layers import Flatten\n",
    "\n",
    "num_classes=20\n",
    "\n",
    "#Hyperparameters\n",
    "filtersCNN1=2 #pourquoi ??\n",
    "kernelSize1=3\n",
    "\n",
    "filtersCNN2=4\n",
    "kernelSize2=3\n",
    "\n",
    "unitsFC1=1000\n",
    "unitsFC2=num_classes\n",
    "\n",
    "#defining the layers architecture\n",
    "\n",
    "model = Sequential()\n",
    "model.add(Conv1D(filtersCNN1,kernelSize1,strides=1, padding=\"valid\", activation='relu',input_shape=(17029,3)))\n",
    "print(\"Conv1D 1 : {}\".format(model.output_shape))\n",
    "model.add(MaxPooling1D(pool_size=2,padding=\"valid\"))\n",
    "print(\"MaxP1D 1 : {}\".format(model.output_shape))\n",
    "#BatchNormalization(axis=3)\n",
    "#model.add(Dropout(0.25))\n",
    "\n",
    "model.add(Conv1D(filtersCNN2,kernelSize2,strides=1, padding=\"valid\", activation='relu'))\n",
    "print(\"Conv1D 2 : {}\".format(model.output_shape))\n",
    "model.add(MaxPooling1D(pool_size=2,strides=None,padding=\"valid\"))\n",
    "print(\"MaxP1D 2 : {}\".format(model.output_shape))\n",
    "#BatchNormalization(axis=3)\n",
    "\n",
    "model.add(Flatten())\n",
    "print(\"Flatten : {}\".format(model.output_shape))\n",
    "#model.add(Dense(1000, activation='relu'))\n",
    "#print(\"Dense  1 : {}\".format(model.output_shape))\n",
    "model.add(Dense(num_classes, activation='softmax'))\n",
    "print(\"Dense  2 : {}\".format(model.output_shape))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
SoleneDc's avatar
SoleneDc committed
343 344 345 346
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
SoleneDc's avatar
SoleneDc committed
347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "conv1d_5 (Conv1D)            (None, 17027, 2)          20        \n",
      "_________________________________________________________________\n",
      "max_pooling1d_5 (MaxPooling1 (None, 8513, 2)           0         \n",
      "_________________________________________________________________\n",
      "conv1d_6 (Conv1D)            (None, 8511, 4)           28        \n",
      "_________________________________________________________________\n",
      "max_pooling1d_6 (MaxPooling1 (None, 4255, 4)           0         \n",
      "_________________________________________________________________\n",
      "flatten_3 (Flatten)          (None, 17020)             0         \n",
      "_________________________________________________________________\n",
      "dense_3 (Dense)              (None, 20)                340420    \n",
      "=================================================================\n",
      "Total params: 340,468\n",
      "Trainable params: 340,468\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
SoleneDc's avatar
SoleneDc committed
366
     ]
Hachemin Pierre-Yves's avatar
Hachemin Pierre-Yves committed
367 368 369
    }
   ],
   "source": [
SoleneDc's avatar
SoleneDc committed
370 371 372 373 374 375 376 377
    "model.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Entrainement du modèle"
Hachemin Pierre-Yves's avatar
Hachemin Pierre-Yves committed
378 379 380 381
   ]
  },
  {
   "cell_type": "code",
SoleneDc's avatar
SoleneDc committed
382
   "execution_count": 66,
Hachemin Pierre-Yves's avatar
Hachemin Pierre-Yves committed
383
   "metadata": {},
SoleneDc's avatar
SoleneDc committed
384 385 386 387 388
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
SoleneDc's avatar
SoleneDc committed
389
      "Train on 771 samples, validate on 331 samples\n",
SoleneDc's avatar
SoleneDc committed
390
      "Epoch 1/100\n",
SoleneDc's avatar
SoleneDc committed
391
      "771/771 [==============================] - 3s 4ms/step - loss: 3.0588 - acc: 0.1842 - val_loss: 2.4122 - val_acc: 0.2659\n",
SoleneDc's avatar
SoleneDc committed
392
      "Epoch 2/100\n",
SoleneDc's avatar
SoleneDc committed
393
      "771/771 [==============================] - 2s 3ms/step - loss: 2.1551 - acc: 0.3385 - val_loss: 2.1926 - val_acc: 0.3505\n",
SoleneDc's avatar
SoleneDc committed
394
      "Epoch 3/100\n",
SoleneDc's avatar
SoleneDc committed
395
      "771/771 [==============================] - 2s 3ms/step - loss: 1.7953 - acc: 0.4630 - val_loss: 2.0954 - val_acc: 0.3565\n",
SoleneDc's avatar
SoleneDc committed
396
      "Epoch 4/100\n",
SoleneDc's avatar
SoleneDc committed
397
      "771/771 [==============================] - 2s 3ms/step - loss: 1.5557 - acc: 0.5499 - val_loss: 1.9441 - val_acc: 0.4199\n",
SoleneDc's avatar
SoleneDc committed
398
      "Epoch 5/100\n",
SoleneDc's avatar
SoleneDc committed
399
      "771/771 [==============================] - 2s 3ms/step - loss: 1.3686 - acc: 0.5888 - val_loss: 1.9027 - val_acc: 0.4350\n",
SoleneDc's avatar
SoleneDc committed
400
      "Epoch 6/100\n",
SoleneDc's avatar
SoleneDc committed
401
      "771/771 [==============================] - 2s 3ms/step - loss: 1.2227 - acc: 0.6407 - val_loss: 1.8550 - val_acc: 0.4683\n",
SoleneDc's avatar
SoleneDc committed
402
      "Epoch 7/100\n",
SoleneDc's avatar
SoleneDc committed
403
      "771/771 [==============================] - 2s 3ms/step - loss: 1.0946 - acc: 0.6744 - val_loss: 1.8169 - val_acc: 0.4713\n",
SoleneDc's avatar
SoleneDc committed
404
      "Epoch 8/100\n",
SoleneDc's avatar
SoleneDc committed
405
      "771/771 [==============================] - 2s 3ms/step - loss: 0.9980 - acc: 0.7263 - val_loss: 1.7765 - val_acc: 0.5227\n",
SoleneDc's avatar
SoleneDc committed
406
      "Epoch 9/100\n",
SoleneDc's avatar
SoleneDc committed
407
      "771/771 [==============================] - 2s 3ms/step - loss: 0.9014 - acc: 0.7588 - val_loss: 1.7428 - val_acc: 0.5861\n",
SoleneDc's avatar
SoleneDc committed
408
      "Epoch 10/100\n",
SoleneDc's avatar
SoleneDc committed
409
      "771/771 [==============================] - 2s 3ms/step - loss: 0.8421 - acc: 0.7860 - val_loss: 1.7668 - val_acc: 0.6133\n",
SoleneDc's avatar
SoleneDc committed
410
      "Epoch 11/100\n",
SoleneDc's avatar
SoleneDc committed
411
      "771/771 [==============================] - 3s 3ms/step - loss: 0.7758 - acc: 0.8067 - val_loss: 1.7413 - val_acc: 0.6042\n",
SoleneDc's avatar
SoleneDc committed
412
      "Epoch 12/100\n",
SoleneDc's avatar
SoleneDc committed
413
      "771/771 [==============================] - 2s 3ms/step - loss: 0.7122 - acc: 0.8210 - val_loss: 1.8435 - val_acc: 0.6133\n",
SoleneDc's avatar
SoleneDc committed
414
      "Epoch 13/100\n",
SoleneDc's avatar
SoleneDc committed
415
      "771/771 [==============================] - 2s 3ms/step - loss: 0.6737 - acc: 0.8366 - val_loss: 1.8246 - val_acc: 0.6405\n",
SoleneDc's avatar
SoleneDc committed
416
      "Epoch 14/100\n",
SoleneDc's avatar
SoleneDc committed
417
      "771/771 [==============================] - 3s 3ms/step - loss: 0.6468 - acc: 0.8392 - val_loss: 1.8040 - val_acc: 0.6375\n",
SoleneDc's avatar
SoleneDc committed
418
      "Epoch 15/100\n",
SoleneDc's avatar
SoleneDc committed
419
      "771/771 [==============================] - 3s 3ms/step - loss: 0.5988 - acc: 0.8612 - val_loss: 1.9525 - val_acc: 0.6375\n",
SoleneDc's avatar
SoleneDc committed
420
      "Epoch 16/100\n",
SoleneDc's avatar
SoleneDc committed
421
      "771/771 [==============================] - 3s 4ms/step - loss: 0.5682 - acc: 0.8768 - val_loss: 1.9042 - val_acc: 0.6375\n",
SoleneDc's avatar
SoleneDc committed
422
      "Epoch 17/100\n",
SoleneDc's avatar
SoleneDc committed
423
      "771/771 [==============================] - 3s 3ms/step - loss: 0.5304 - acc: 0.8859 - val_loss: 1.8511 - val_acc: 0.6677\n",
SoleneDc's avatar
SoleneDc committed
424
      "Epoch 18/100\n",
SoleneDc's avatar
SoleneDc committed
425
      "771/771 [==============================] - 3s 4ms/step - loss: 0.5021 - acc: 0.9040 - val_loss: 1.8968 - val_acc: 0.6828\n",
SoleneDc's avatar
SoleneDc committed
426
      "Epoch 19/100\n",
SoleneDc's avatar
SoleneDc committed
427
      "771/771 [==============================] - 3s 4ms/step - loss: 0.4744 - acc: 0.9157 - val_loss: 1.9570 - val_acc: 0.6828\n",
SoleneDc's avatar
SoleneDc committed
428
      "Epoch 20/100\n",
SoleneDc's avatar
SoleneDc committed
429
      "771/771 [==============================] - 3s 3ms/step - loss: 0.4360 - acc: 0.9300 - val_loss: 1.9210 - val_acc: 0.6979\n",
SoleneDc's avatar
SoleneDc committed
430
      "Epoch 21/100\n",
SoleneDc's avatar
SoleneDc committed
431
      "771/771 [==============================] - 3s 3ms/step - loss: 0.4221 - acc: 0.9287 - val_loss: 1.9617 - val_acc: 0.7100\n",
SoleneDc's avatar
SoleneDc committed
432
      "Epoch 22/100\n",
SoleneDc's avatar
SoleneDc committed
433
      "771/771 [==============================] - 3s 3ms/step - loss: 0.3990 - acc: 0.9326 - val_loss: 2.0018 - val_acc: 0.7100\n",
SoleneDc's avatar
SoleneDc committed
434
      "Epoch 23/100\n",
SoleneDc's avatar
SoleneDc committed
435
      "771/771 [==============================] - 3s 3ms/step - loss: 0.3832 - acc: 0.9377 - val_loss: 2.0335 - val_acc: 0.7009\n",
SoleneDc's avatar
SoleneDc committed
436
      "Epoch 24/100\n",
SoleneDc's avatar
SoleneDc committed
437
      "771/771 [==============================] - 3s 3ms/step - loss: 0.3630 - acc: 0.9455 - val_loss: 2.0596 - val_acc: 0.7100\n",
SoleneDc's avatar
SoleneDc committed
438
      "Epoch 25/100\n",
SoleneDc's avatar
SoleneDc committed
439
      "771/771 [==============================] - 2s 3ms/step - loss: 0.3709 - acc: 0.9377 - val_loss: 2.0851 - val_acc: 0.7190\n",
SoleneDc's avatar
SoleneDc committed
440
      "Epoch 26/100\n",
SoleneDc's avatar
SoleneDc committed
441
      "771/771 [==============================] - 3s 3ms/step - loss: 0.3472 - acc: 0.9494 - val_loss: 2.1309 - val_acc: 0.7190\n",
SoleneDc's avatar
SoleneDc committed
442
      "Epoch 27/100\n",
SoleneDc's avatar
SoleneDc committed
443
      "771/771 [==============================] - 3s 3ms/step - loss: 0.3345 - acc: 0.9585 - val_loss: 2.1517 - val_acc: 0.7039\n",
SoleneDc's avatar
SoleneDc committed
444
      "Epoch 28/100\n",
SoleneDc's avatar
SoleneDc committed
445
      "771/771 [==============================] - 3s 3ms/step - loss: 0.3231 - acc: 0.9533 - val_loss: 2.1707 - val_acc: 0.7190\n",
SoleneDc's avatar
SoleneDc committed
446
      "Epoch 29/100\n",
SoleneDc's avatar
SoleneDc committed
447
      "771/771 [==============================] - 3s 3ms/step - loss: 0.3149 - acc: 0.9585 - val_loss: 2.1534 - val_acc: 0.7402\n",
SoleneDc's avatar
SoleneDc committed
448
      "Epoch 30/100\n",
SoleneDc's avatar
SoleneDc committed
449
      "771/771 [==============================] - 3s 4ms/step - loss: 0.3031 - acc: 0.9585 - val_loss: 2.1714 - val_acc: 0.7402\n",
SoleneDc's avatar
SoleneDc committed
450
      "Epoch 31/100\n",
SoleneDc's avatar
SoleneDc committed
451
      "771/771 [==============================] - 3s 3ms/step - loss: 0.2834 - acc: 0.9663 - val_loss: 2.1848 - val_acc: 0.7281\n",
SoleneDc's avatar
SoleneDc committed
452
      "Epoch 32/100\n",
SoleneDc's avatar
SoleneDc committed
453
      "771/771 [==============================] - 3s 3ms/step - loss: 0.2850 - acc: 0.9676 - val_loss: 2.2157 - val_acc: 0.7251\n",
SoleneDc's avatar
SoleneDc committed
454
      "Epoch 33/100\n",
SoleneDc's avatar
SoleneDc committed
455
      "771/771 [==============================] - 3s 4ms/step - loss: 0.2762 - acc: 0.9715 - val_loss: 2.2135 - val_acc: 0.7432\n",
SoleneDc's avatar
SoleneDc committed
456
      "Epoch 34/100\n",
SoleneDc's avatar
SoleneDc committed
457
      "771/771 [==============================] - 3s 3ms/step - loss: 0.2664 - acc: 0.9728 - val_loss: 2.2249 - val_acc: 0.7583\n",
SoleneDc's avatar
SoleneDc committed
458
      "Epoch 35/100\n",
SoleneDc's avatar
SoleneDc committed
459
      "771/771 [==============================] - 3s 3ms/step - loss: 0.2583 - acc: 0.9780 - val_loss: 2.2648 - val_acc: 0.7432\n",
SoleneDc's avatar
SoleneDc committed
460
      "Epoch 36/100\n",
SoleneDc's avatar
SoleneDc committed
461
      "771/771 [==============================] - 3s 3ms/step - loss: 0.2549 - acc: 0.9767 - val_loss: 2.2908 - val_acc: 0.7492\n",
SoleneDc's avatar
SoleneDc committed
462
      "Epoch 37/100\n",
SoleneDc's avatar
SoleneDc committed
463
      "771/771 [==============================] - 3s 4ms/step - loss: 0.2553 - acc: 0.9780 - val_loss: 2.3079 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
464
      "Epoch 38/100\n",
SoleneDc's avatar
SoleneDc committed
465
      "771/771 [==============================] - 3s 4ms/step - loss: 0.2496 - acc: 0.9805 - val_loss: 2.3140 - val_acc: 0.7341\n",
SoleneDc's avatar
SoleneDc committed
466
      "Epoch 39/100\n",
SoleneDc's avatar
SoleneDc committed
467
      "771/771 [==============================] - 3s 4ms/step - loss: 0.2444 - acc: 0.9792 - val_loss: 2.3236 - val_acc: 0.7553\n",
SoleneDc's avatar
SoleneDc committed
468
      "Epoch 40/100\n",
SoleneDc's avatar
SoleneDc committed
469
      "771/771 [==============================] - 3s 3ms/step - loss: 0.2404 - acc: 0.9767 - val_loss: 2.3579 - val_acc: 0.7281\n",
SoleneDc's avatar
SoleneDc committed
470
      "Epoch 41/100\n",
SoleneDc's avatar
SoleneDc committed
471
      "771/771 [==============================] - 2s 3ms/step - loss: 0.2314 - acc: 0.9818 - val_loss: 2.3500 - val_acc: 0.7341\n",
SoleneDc's avatar
SoleneDc committed
472
      "Epoch 42/100\n",
SoleneDc's avatar
SoleneDc committed
473
      "771/771 [==============================] - 2s 3ms/step - loss: 0.2289 - acc: 0.9818 - val_loss: 2.3413 - val_acc: 0.7492\n",
SoleneDc's avatar
SoleneDc committed
474
      "Epoch 43/100\n",
SoleneDc's avatar
SoleneDc committed
475
      "771/771 [==============================] - 3s 4ms/step - loss: 0.2319 - acc: 0.9780 - val_loss: 2.3790 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
476
      "Epoch 44/100\n",
SoleneDc's avatar
SoleneDc committed
477
      "771/771 [==============================] - 3s 4ms/step - loss: 0.2331 - acc: 0.9805 - val_loss: 2.3986 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
478
      "Epoch 45/100\n",
SoleneDc's avatar
SoleneDc committed
479
      "771/771 [==============================] - 3s 4ms/step - loss: 0.2191 - acc: 0.9857 - val_loss: 2.3987 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
480
      "Epoch 46/100\n",
SoleneDc's avatar
SoleneDc committed
481
      "771/771 [==============================] - 3s 4ms/step - loss: 0.2215 - acc: 0.9831 - val_loss: 2.4317 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
482
      "Epoch 47/100\n",
SoleneDc's avatar
SoleneDc committed
483
      "771/771 [==============================] - 3s 4ms/step - loss: 0.2336 - acc: 0.9818 - val_loss: 2.4252 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
484
      "Epoch 48/100\n",
SoleneDc's avatar
SoleneDc committed
485
      "771/771 [==============================] - 2s 3ms/step - loss: 0.2219 - acc: 0.9844 - val_loss: 2.4281 - val_acc: 0.7281\n",
SoleneDc's avatar
SoleneDc committed
486
      "Epoch 49/100\n",
SoleneDc's avatar
SoleneDc committed
487
      "771/771 [==============================] - 3s 3ms/step - loss: 0.2155 - acc: 0.9857 - val_loss: 2.4022 - val_acc: 0.7281\n",
SoleneDc's avatar
SoleneDc committed
488
      "Epoch 50/100\n",
SoleneDc's avatar
SoleneDc committed
489
      "771/771 [==============================] - 2s 3ms/step - loss: 0.2641 - acc: 0.9624 - val_loss: 2.4222 - val_acc: 0.7311\n",
SoleneDc's avatar
SoleneDc committed
490
      "Epoch 51/100\n",
SoleneDc's avatar
SoleneDc committed
491
      "771/771 [==============================] - 3s 3ms/step - loss: 0.3224 - acc: 0.9533 - val_loss: 2.4705 - val_acc: 0.7402\n",
SoleneDc's avatar
SoleneDc committed
492
      "Epoch 52/100\n",
SoleneDc's avatar
SoleneDc committed
493
      "771/771 [==============================] - 3s 4ms/step - loss: 0.2687 - acc: 0.9637 - val_loss: 2.5129 - val_acc: 0.7130\n",
SoleneDc's avatar
SoleneDc committed
494
      "Epoch 53/100\n",
SoleneDc's avatar
SoleneDc committed
495
      "771/771 [==============================] - 3s 3ms/step - loss: 0.2627 - acc: 0.9780 - val_loss: 2.3319 - val_acc: 0.7281\n",
SoleneDc's avatar
SoleneDc committed
496
      "Epoch 54/100\n",
SoleneDc's avatar
SoleneDc committed
497
      "771/771 [==============================] - 3s 3ms/step - loss: 0.2546 - acc: 0.9728 - val_loss: 2.3324 - val_acc: 0.7311\n",
SoleneDc's avatar
SoleneDc committed
498
      "Epoch 55/100\n",
SoleneDc's avatar
SoleneDc committed
499
      "771/771 [==============================] - 3s 3ms/step - loss: 0.2278 - acc: 0.9780 - val_loss: 2.4326 - val_acc: 0.7402\n",
SoleneDc's avatar
SoleneDc committed
500
      "Epoch 56/100\n",
SoleneDc's avatar
SoleneDc committed
501
      "771/771 [==============================] - 3s 3ms/step - loss: 0.2143 - acc: 0.9857 - val_loss: 2.3611 - val_acc: 0.7221\n",
SoleneDc's avatar
SoleneDc committed
502
      "Epoch 57/100\n",
SoleneDc's avatar
SoleneDc committed
503
      "771/771 [==============================] - 2s 3ms/step - loss: 0.2079 - acc: 0.9870 - val_loss: 2.3708 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
504
      "Epoch 58/100\n",
SoleneDc's avatar
SoleneDc committed
505
      "771/771 [==============================] - 3s 3ms/step - loss: 0.2011 - acc: 0.9883 - val_loss: 2.3835 - val_acc: 0.7432\n",
SoleneDc's avatar
SoleneDc committed
506
      "Epoch 59/100\n",
SoleneDc's avatar
SoleneDc committed
507
      "771/771 [==============================] - 3s 3ms/step - loss: 0.1980 - acc: 0.9870 - val_loss: 2.3892 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
508
      "Epoch 60/100\n",
SoleneDc's avatar
SoleneDc committed
509
      "771/771 [==============================] - 3s 3ms/step - loss: 0.1953 - acc: 0.9870 - val_loss: 2.4116 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
510
      "Epoch 61/100\n",
SoleneDc's avatar
SoleneDc committed
511
      "771/771 [==============================] - 2s 3ms/step - loss: 0.1928 - acc: 0.9883 - val_loss: 2.4240 - val_acc: 0.7372\n"
SoleneDc's avatar
SoleneDc committed
512 513 514 515 516 517 518
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 62/100\n",
SoleneDc's avatar
SoleneDc committed
519
      "771/771 [==============================] - 2s 3ms/step - loss: 0.1916 - acc: 0.9883 - val_loss: 2.4356 - val_acc: 0.7341\n",
SoleneDc's avatar
SoleneDc committed
520
      "Epoch 63/100\n",
SoleneDc's avatar
SoleneDc committed
521
      "771/771 [==============================] - 2s 3ms/step - loss: 0.1907 - acc: 0.9883 - val_loss: 2.4427 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
522
      "Epoch 64/100\n",
SoleneDc's avatar
SoleneDc committed
523
      "771/771 [==============================] - 3s 3ms/step - loss: 0.1890 - acc: 0.9883 - val_loss: 2.4529 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
524
      "Epoch 65/100\n",
SoleneDc's avatar
SoleneDc committed
525
      "771/771 [==============================] - 2s 3ms/step - loss: 0.1879 - acc: 0.9896 - val_loss: 2.4665 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
526
      "Epoch 66/100\n",
SoleneDc's avatar
SoleneDc committed
527
      "771/771 [==============================] - 3s 3ms/step - loss: 0.1866 - acc: 0.9896 - val_loss: 2.4822 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
528
      "Epoch 67/100\n",
SoleneDc's avatar
SoleneDc committed
529
      "771/771 [==============================] - 3s 3ms/step - loss: 0.1865 - acc: 0.9896 - val_loss: 2.4940 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
530
      "Epoch 68/100\n",
SoleneDc's avatar
SoleneDc committed
531
      "771/771 [==============================] - 3s 3ms/step - loss: 0.1856 - acc: 0.9896 - val_loss: 2.4994 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
532
      "Epoch 69/100\n",
SoleneDc's avatar
SoleneDc committed
533
      "771/771 [==============================] - 3s 3ms/step - loss: 0.1848 - acc: 0.9896 - val_loss: 2.5000 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
534
      "Epoch 70/100\n",
SoleneDc's avatar
SoleneDc committed
535
      "771/771 [==============================] - 2s 3ms/step - loss: 0.1845 - acc: 0.9896 - val_loss: 2.5410 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
536
      "Epoch 71/100\n",
SoleneDc's avatar
SoleneDc committed
537
      "771/771 [==============================] - 3s 3ms/step - loss: 0.1858 - acc: 0.9896 - val_loss: 2.5247 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
538
      "Epoch 72/100\n",
SoleneDc's avatar
SoleneDc committed
539
      "771/771 [==============================] - 3s 3ms/step - loss: 0.1837 - acc: 0.9896 - val_loss: 2.5514 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
540
      "Epoch 73/100\n",
SoleneDc's avatar
SoleneDc committed
541
      "771/771 [==============================] - 2s 3ms/step - loss: 0.1820 - acc: 0.9896 - val_loss: 2.5548 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
542
      "Epoch 74/100\n",
SoleneDc's avatar
SoleneDc committed
543
      "771/771 [==============================] - 3s 3ms/step - loss: 0.1814 - acc: 0.9896 - val_loss: 2.5542 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
544
      "Epoch 75/100\n",
SoleneDc's avatar
SoleneDc committed
545
      "771/771 [==============================] - 3s 3ms/step - loss: 0.1814 - acc: 0.9896 - val_loss: 2.5809 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
546
      "Epoch 76/100\n",
SoleneDc's avatar
SoleneDc committed
547
      "771/771 [==============================] - 3s 4ms/step - loss: 0.1810 - acc: 0.9896 - val_loss: 2.5771 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
548
      "Epoch 77/100\n",
SoleneDc's avatar
SoleneDc committed
549
      "771/771 [==============================] - 3s 4ms/step - loss: 0.1799 - acc: 0.9896 - val_loss: 2.5901 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
550
      "Epoch 78/100\n",
SoleneDc's avatar
SoleneDc committed
551
      "771/771 [==============================] - 3s 3ms/step - loss: 0.1794 - acc: 0.9896 - val_loss: 2.5813 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
552
      "Epoch 79/100\n",
SoleneDc's avatar
SoleneDc committed
553
      "771/771 [==============================] - 3s 3ms/step - loss: 0.1793 - acc: 0.9896 - val_loss: 2.5953 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
554
      "Epoch 80/100\n",
SoleneDc's avatar
SoleneDc committed
555
      "771/771 [==============================] - 3s 3ms/step - loss: 0.1786 - acc: 0.9896 - val_loss: 2.5978 - val_acc: 0.7432\n",
SoleneDc's avatar
SoleneDc committed
556
      "Epoch 81/100\n",
SoleneDc's avatar
SoleneDc committed
557
      "771/771 [==============================] - 3s 3ms/step - loss: 0.1782 - acc: 0.9896 - val_loss: 2.6117 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
558
      "Epoch 82/100\n",
SoleneDc's avatar
SoleneDc committed
559
      "771/771 [==============================] - 3s 3ms/step - loss: 0.1776 - acc: 0.9896 - val_loss: 2.6169 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
560
      "Epoch 83/100\n",
SoleneDc's avatar
SoleneDc committed
561
      "771/771 [==============================] - 3s 3ms/step - loss: 0.1776 - acc: 0.9896 - val_loss: 2.6113 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
562
      "Epoch 84/100\n",
SoleneDc's avatar
SoleneDc committed
563
      "771/771 [==============================] - 2s 3ms/step - loss: 0.1771 - acc: 0.9896 - val_loss: 2.6334 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
564
      "Epoch 85/100\n",
SoleneDc's avatar
SoleneDc committed
565
      "771/771 [==============================] - 3s 3ms/step - loss: 0.1769 - acc: 0.9896 - val_loss: 2.6154 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
566
      "Epoch 86/100\n",
SoleneDc's avatar
SoleneDc committed
567
      "771/771 [==============================] - 3s 3ms/step - loss: 0.1767 - acc: 0.9896 - val_loss: 2.6338 - val_acc: 0.7341\n",
SoleneDc's avatar
SoleneDc committed
568
      "Epoch 87/100\n",
SoleneDc's avatar
SoleneDc committed
569
      "771/771 [==============================] - 2s 3ms/step - loss: 0.1762 - acc: 0.9896 - val_loss: 2.6380 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
570
      "Epoch 88/100\n",
SoleneDc's avatar
SoleneDc committed
571
      "771/771 [==============================] - 2s 3ms/step - loss: 0.1759 - acc: 0.9896 - val_loss: 2.6391 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
572
      "Epoch 89/100\n",
SoleneDc's avatar
SoleneDc committed
573
      "771/771 [==============================] - 3s 3ms/step - loss: 0.1756 - acc: 0.9896 - val_loss: 2.6400 - val_acc: 0.7341\n",
SoleneDc's avatar
SoleneDc committed
574
      "Epoch 90/100\n",
SoleneDc's avatar
SoleneDc committed
575
      "771/771 [==============================] - 3s 4ms/step - loss: 0.1758 - acc: 0.9896 - val_loss: 2.6494 - val_acc: 0.7311\n",
SoleneDc's avatar
SoleneDc committed
576
      "Epoch 91/100\n",
SoleneDc's avatar
SoleneDc committed
577
      "771/771 [==============================] - 3s 3ms/step - loss: 0.1752 - acc: 0.9896 - val_loss: 2.6473 - val_acc: 0.7311\n",
SoleneDc's avatar
SoleneDc committed
578
      "Epoch 92/100\n",
SoleneDc's avatar
SoleneDc committed
579
      "771/771 [==============================] - 3s 3ms/step - loss: 0.1751 - acc: 0.9896 - val_loss: 2.6645 - val_acc: 0.7311\n",
SoleneDc's avatar
SoleneDc committed
580
      "Epoch 93/100\n",
SoleneDc's avatar
SoleneDc committed
581
      "771/771 [==============================] - 2s 3ms/step - loss: 0.1747 - acc: 0.9896 - val_loss: 2.6663 - val_acc: 0.7281\n",
SoleneDc's avatar
SoleneDc committed
582
      "Epoch 94/100\n",
SoleneDc's avatar
SoleneDc committed
583
      "771/771 [==============================] - 3s 3ms/step - loss: 0.1745 - acc: 0.9896 - val_loss: 2.6627 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
584
      "Epoch 95/100\n",
SoleneDc's avatar
SoleneDc committed
585
      "771/771 [==============================] - 3s 3ms/step - loss: 0.1745 - acc: 0.9896 - val_loss: 2.6794 - val_acc: 0.7281\n",
SoleneDc's avatar
SoleneDc committed
586
      "Epoch 96/100\n",
SoleneDc's avatar
SoleneDc committed
587
      "771/771 [==============================] - 3s 3ms/step - loss: 0.1742 - acc: 0.9896 - val_loss: 2.6638 - val_acc: 0.7372\n",
SoleneDc's avatar
SoleneDc committed
588
      "Epoch 97/100\n",
SoleneDc's avatar
SoleneDc committed
589
      "771/771 [==============================] - 3s 3ms/step - loss: 0.1741 - acc: 0.9896 - val_loss: 2.6946 - val_acc: 0.7311\n",
SoleneDc's avatar
SoleneDc committed
590
      "Epoch 98/100\n",
SoleneDc's avatar
SoleneDc committed
591
      "771/771 [==============================] - 3s 4ms/step - loss: 0.1739 - acc: 0.9896 - val_loss: 2.6806 - val_acc: 0.7311\n",
SoleneDc's avatar
SoleneDc committed
592
      "Epoch 99/100\n",
SoleneDc's avatar
SoleneDc committed
593
      "771/771 [==============================] - 3s 3ms/step - loss: 0.1736 - acc: 0.9896 - val_loss: 2.6947 - val_acc: 0.7311\n",
SoleneDc's avatar
SoleneDc committed
594
      "Epoch 100/100\n",
SoleneDc's avatar
SoleneDc committed
595
      "771/771 [==============================] - 2s 3ms/step - loss: 0.1735 - acc: 0.9896 - val_loss: 2.6960 - val_acc: 0.7311\n"
SoleneDc's avatar
SoleneDc committed
596 597 598 599
     ]
    }
   ],
   "source": [
SoleneDc's avatar
SoleneDc committed
600 601 602
    "model.compile(loss='categorical_crossentropy',\n",
    "              optimizer='adam',\n",
    "              metrics=['accuracy'])\n",
SoleneDc's avatar
SoleneDc committed
603
    "\n",
SoleneDc's avatar
SoleneDc committed
604
    "history = model.fit(X_train, Y_train, epochs=100, validation_split=0.3, batch_size=50 , verbose=1)"
SoleneDc's avatar
SoleneDc committed
605 606 607 608
   ]
  },
  {
   "cell_type": "code",
SoleneDc's avatar
SoleneDc committed
609
   "execution_count": 67,
SoleneDc's avatar
SoleneDc committed
610 611 612 613
   "metadata": {},
   "outputs": [
    {
     "data": {
SoleneDc's avatar
SoleneDc committed
614
      "image/png": "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\nD9n3d999x913342IEBQUxMKFC4mMjOSJJ57g448/pqCggLFjx/LQQw8xZcoU1q9fT79+/bj44ot5\n4oknauXvUlcCp/qoRRfofSUb86OtpGBMI7V27VomTpzIihUr6NChA0888QSJiYmsXLmSr7/+mrVr\n1x62TXZ2NmeffTYrV67ktNNO4/XXXz9snX/9619MnTqVpKQkFixYQEREBHPmzGHbtm0sXryYpKQk\nFi1axKJFi3jiiSc4+eSTSUpKanAJAQKppND9QvTEC8j8yxfW75ExteRYrujddMIJJzBo0KCK6Rkz\nZvDaa69RUlJCWloaa9eupUePQ7tga9KkCSNGjABg4MCBLFy48LD9Dhs2jLvuuourr76aK664gqio\nKL766ivmzp1L//79Adi/fz8bNmw4rJTR0AROUgDyikopKimzkoIxjVRkZGTF640bN/Lss8+yZMkS\nYmJiuPbaa6u8fz8s7OD5IDg4mJKSksPWefDBBxk1ahSff/45gwYNYv78+agqDz74IBMnTjxk3eTk\n5Fo8oroXONVHwN48586EFpYUjGn0cnJyiI6OplmzZuzcuZMvv/zymPe1adMm+vTpwwMPPED//v1Z\nv349F110Ea+99hp5eXmA86T3nj17iI6OJjc3t7YOo84FVEkh05MUrPrImMZvwIAB9OjRg169etGt\nWzeGDRt2zPt68sknWbhwIUFBQfTp04fhw4cTFhbGr7/+ytChQwGIjo5m+vTpdOnShYSEBHr37s3I\nkSMbXLuCqLrbW3VtS0hI0MTExGPa9rtf0/n9m4l8cuvp9O/UopYjMyYwrFu3jlNPPdXfYZgjqOoz\nEpFlqppwtG0Dqvooc395ScH6PTLGmKoEVFLI8lQf2VCcxhhTtcBKCvlFhAUHERlm/R4ZY0xVAisp\n7C+iZWSY9fBojDHVCKykkFdkzygYY8wRBFRSyMwrItbaE4wxploBlRT25hfRoqklBWMasnPOOeew\nB9GeeeYZbr311iNuFxUVBUBaWhpjx46tdt9Hu+X9mWeeIT8/v2L6kksuYd++fb6EXmu2bNnC9OnT\nXdm3q0lBRC4WkfUikiwiU6pYfo+IrBWRVSLyrYh0djOe8jYFY0zDNX78eGbOnHnIvJkzZzJ+/Hif\ntm/fvj0ffvjhMb9/5aQwZ84cYmJijnl/x8LNpODaE80iEgy8CFwIpAJLRWSWqnp3U7gCSFDVfBG5\n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\nRK5CYII=\n",
SoleneDc's avatar
SoleneDc committed
615
      "text/plain": [
SoleneDc's avatar
SoleneDc committed
616
       "<matplotlib.figure.Figure at 0x181f5a9668>"
SoleneDc's avatar
SoleneDc committed
617 618 619 620 621 622 623
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
SoleneDc's avatar
SoleneDc committed
624
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEWCAYAAACJ0YulAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3Xd8lfXZ+PHPdU72hoQdIAwRGSEg\nS7G4RRy4B2pbJ65Wba0t7a9PtT7tU57WqlVb14PWgajFhXui4mIjG9kQ9gwkZJ5cvz++d0KAjEPI\nyUlyrvfrdb9yzr3OdXvwvs79naKqGGOMMQC+cAdgjDGm6bCkYIwxppIlBWOMMZUsKRhjjKlkScEY\nY0wlSwrGGGMqWVIwJggi8m8R+VOQ+64VkTNCHZMxoWBJwZhGdCTJxZhwsKRgjDGmkiUF02J4xTb3\niMgCESkQkYki0k5E3heRfSLyiYi0qrL/GBFZLCJ7RORzETmuyraBIjLXO+4VIO6QzzpPROZ7x34j\nItkNEP+JIjJLRPK8vydW2XatiKz24lkjIld763uKyBfeMTu8WI2pN0sKpqW5BDgT6AWcD7wP/A7I\nwP17vwNARHoBk4G7gDbAe8DbIhIjIjHAm8ALQGvgP9558Y4dBDwD3AykA08CU0Uktr5Bi0hr4F3g\nEe+cDwLviki6iCR660erajJwIjDfO/S/gY+AVkAm8Gh9YzAGLCmYludRVd2qqhuB6cAMVZ2nqsXA\nG8BAb78rgHdV9WNVLQUeAOJxN9zhQDTwsKqWquoUYFaVz7gJeFJVZ6hqQFWfA4q94+rrXGCFqr6g\nqmWqOhlYhktsAOVAPxGJV9XNqrrYW18KdAU6qmqRqn51FDEYY0nBtDhbq7wurOZ9kve6I7CuYoOq\nlgMbgE7eto168GiR66q87grc7RUd7RGRPUBn77j6OiieKp/ZSVULcEnsFmCziLwrIr29fX4NCDDT\nKwq7/ihiMMaSgolYm3A3dwBERHA39o3AZqCTt65ClyqvNwB/VtW0KkuC9+u+QeKp8pkbAVT1Q1U9\nE+iAe4J42lu/RVVvUtWOuOKsf4lIz6OIw0Q4SwomUr0KnCsip4tINHA3rgjoG+BboAy4Q0SiRORi\nYGiVY58GbhGRYeIkisi5IpIc5Gf7RSSuyhKDq9PoJSJXeZ95BdAHeMerLB/j1S0UA/lAAEBELhOR\nTO+8uwGt2GZMfVhSMBFJVZcD1+AqZnfgyu7PV9USVS0BLgauxd1orwBer3LsbFy9wmPe9pXevsEa\njyvKqlg+U9WdwHm45LQTVyx0nqruwP1/ejfuaWIXcDJwm3euIcAMEckHpgJ3quqaI4jFmIOITbJj\njDGmgj0pGGOMqWRJwRhjTCVLCsYYYypZUjDGGFMpKtwBHKmMjAzNysoKdxjGGNOszJkzZ4eqtqlr\nv2aXFLKyspg9e3a4wzDGmGZFRA7tMV8tKz4yxhhTyZKCMcaYSpYUjDHGVLKkYIwxppIlBWOMMZUs\nKRhjjKlkScEYY0yliEkKy7fs44EPl7OroCTcoRhjTJMVMUlh9fZ8Hpu2kq17i8IdijHGNFkhSwre\njFIzReR7b+7YP1azT6yIvCIiK0VkhohkhSqexFjXebuguCxUH2GMMc1eKJ8UioHTVHUAkAOcLSLD\nD9nnBmC3qvYEHgL+N1TBVCSFfEsKxhhTo5AlBXXyvbfR3nLoNG8XAM95r6cApx8yWXqDSfKSwv4S\nm77WGGNqEtI6BRHxi8h8YBvwsarOOGSXTsAGAFUtA/KA9GrOM05EZovI7O3bt9crloQYP2BPCsYY\nU5uQJgVVDahqDpAJDBWRfofsUt1TwWGTRqvqU6o6WFUHt2lT58iv1UqyOgVjjKlTo7Q+UtU9wOfA\n2YdsygU6A4hIFJAK7ApFDIlWfGSMMXUKZeujNiKS5r2OB84Alh2y21Tgp97rS4HPVPWwJ4WGEBPl\nI9ovVnxkjDG1COUkOx2A50TEj0s+r6rqOyJyPzBbVacCE4EXRGQl7gnhyhDGQ2JslBUfGWNMLUKW\nFFR1ATCwmvV/qPK6CLgsVDEcKjEmyp4UjDGmFhHToxlcZfP+YqtTMMaYmkRUUkiI9VNQYk8KxhhT\nk4hKCkmxVnxkjDG1iaikkBhjFc3GGFObiEoKCbF+CqxOwRhjahRRSSEpNsrqFIwxphYRlRSsn4Ix\nxtQuopJCUmwUpQGlpKw83KEYY0yTFFFJoWKkVHtaMMaY6kVUUrCJdowxpnYRlRQqh8+2ymZjjKlW\nRCWFA8VH1izVGGOqE1FJwSbaMcaY2kVUUki0pGCMMbUK5XwKTU6SVTQbY5qagh0w7wVocxx0PwWi\n46C8HDbOhhUfwf6dUFYCgWLodTb0vzSk4URUUqioU7ApOY0xjUoVNsyE3FnQ/WRo1w9EYNl78PYd\nULDd7RedCF1PgC2LIH8LiB/iW0FUrFvaZ4c81IhKCtYk1RjT4MoDsOozd9Mv3Q+lhaDlkNAaEtKh\naC8sfBV2rT5wTMaxkN4Dlr8H7frD1f9xTwTL3oM1X0KXYdD7fDjmTIhPa9TLiaikEBvlI8onVqdg\njDky5eWwaxVsnAP7d0FMolu2LYX5L8G+TYBAdAJEx7ungP27QL1SiawfwY9+BVknwcqPYdHrsGqa\nW3fybyAqxu3X84ywXWKFiEoKIkJCjN+Kj4yJJGXFsHY6tB8ASW0OXv/Dh+5mn78N8rdCyX5Xdh8o\nhUAJlJe517vXQXHe4ecWn7uRj54AvUYfuLmDKzIqyjvw1FBhyI1uUXXJo4mJqKQANtGOMS1SWYn7\ntb5/JyS1h+T27mY+93n46iG3zRcNx50H/S+HDd/BvBfd/gAxyS5hxCS5sntfNETFgS8K/NHQ6XjI\nHAwdB0FKB5c8SvIhLg2S21Ufk0jtRT9NMCFABCYFGynVmBageB+s/ASWvQtrv4J9WwA9sL3ipl6y\nD7qcAGf/jyvzn/8SLH7DVeD2PgeOvw66DHdFQUcivlWDXk5TEpFJwZ4UjGmCyoph/beuyKV9NrTK\ncpW4679xN/+Nc10yKN7ninrKSyG+NfQ8HdJ7QkonV7GbvwX2rHdl+v0vc+X4ItD3Ijj9Dy6JtOsL\nKR3DfcVNUgQmBatTMCas9m2Baf8DeRsgIQMS28CedbD6c1ckUyEuFRAo2uN+9XcaDBk9ITYFktpC\nzzOh8zDwH8FtLDretegxNYq8pBATxc78/eEOw5jIEyiFGU/A5xPc63Z9Yecq10Y/IR2yL4djznI3\n/C0LYdN89zTQ62zocdqRF/GYeom4pGAVzcY0kOpaz2xdAl9MgJ2roXDXgWaZvii3f1khHDPKtdZp\n3b3mc3c6Ho4PbfimeiFLCiLSGXgeaA+UA0+p6j8O2ecU4C1gjbfqdVW9P1QxASTE+q2i2ZijtXAK\nTP25a5GTfaUbnuGbR2HmUxCb7Cp3OwyAhFYuIZSXufqB7qdAr1Hhjd3UKpRPCmXA3ao6V0SSgTki\n8rGqLjlkv+mqel4I4zhIYmwUBVanYBpLoOzIyrybg++egA9+4276ezbAW7d5GwSOv9ZV5lZtl2+a\nlZD9a1XVzcBm7/U+EVkKdAIOTQqNKikmipKyckoD5UT7I2qQWNOYSgvhtRth6yL4+Vzw+cMd0ZFT\nde3487e6OoDyACx727X7730eXDLRtenPneWGeeg1CjoODHfU5ig1yk8YEckCBgIzqtl8goh8D2wC\nfqWqi0MZS9Xhs9MSYurY25h6KN4Hk8e6XrTgKk075oQ3pmDs2wKrv4A1X0DubNc6qLSaRhmDfgLn\nPnTgCajzULeYFiHkSUFEkoDXgLtUde8hm+cCXVU1X0TOAd4EjqnmHOOAcQBdunQ5qngSY73Z10oC\npCUc1amMOdz+XTDpMtg0D868Hz722sU31aSwb4sbh2fRFDeuD7iOWV1OcMM3pHV2vYP9se5pJy7V\nNQNtor1xzdELaVIQkWhcQpikqq8fur1qklDV90TkXyKSoao7DtnvKeApgMGDBytHwSbaMSFTtBde\nvBi2LoYrXoDe58Kcf8O6r+HEn4U7ugN2rHCjcy7/wHUWQ11nsdPvdU0/22eDz4pWI1UoWx8JMBFY\nqqoP1rBPe2CrqqqIDMXNBLczVDGBDZ9tQqS0CF6+yhUVXTEJjj3bre86ApZOdeXx4ahXKNwDO35w\nTy4bZsD6GbA3121r39+N0NnvEmjTq/FjM01SKJ8URgA/BhaKyHxv3e+ALgCq+gRwKXCriJQBhcCV\nqnpUTwJ1SYyxJwVTi0Cp+3VfVgSte7gx731RrldtUR607eOKUw46pgymXOfqEC5++kBCADdk8rwX\n3NNDh2omSNm/yw3aNvSmo++cVR6ALQtcvcDa6bB5ARRsO7A9pZMr+ul6l+sQltb56D7PtEihbH30\nFVBrwaOqPgY8FqoYDlJSAJvmkxjdG4CCYmuWag6xey1MucFNg1iTqHg46S448Q43ZMLqaTD9QXcT\nHv031yu3qqwR7u/ar6pPCtP/Dt8+Bvt3wFl/OvKY92524/Ov/NQNE1G0x63PONb1Dm7Ty71u19eS\ngAlKC2tAXYtl78LrN9Fq7KeAPSlEvPJyyJ0JxfmAupY2H9/nXl/2b+h2spspa9dq1zQzLtUlgTnP\nwud/gbkvQFwKbFsCSe3g3AdhyA2Hf05qphvYbd3XcMJtB28ryoM5z7lxfb79lxvSubrEUZ3da11C\nmf+S6xiW3ME1E+1+CnT70eFPM8YEKXKSgtd+OnnXIqANBSWWFCJS8T53I53xxMHTI4IbWuHSZ9xN\nHFwHrMzBB+/T/WQYOg4+vtdNwnLh465MPiq25s/sehIsf9cloqoVuHNfcEM7//gNeH0cvH0n3PjJ\n4XUPgTLY8r0bJ2j3OpeIlk51E7wMvt4N/9z2OGsRZBpE5CSF1j0gNoX47QuA0634KBItew/evMX9\nQs8cAqf8Flp1c9v8UW4ydX903efpeiLc+HHwn5t1Esx/0d3M2/dz6wJlLjF1HeFa/Jw9AV67AWb9\nHwy5CXaucBXDKz91RVRFVWb9SmzrEsFJv4DUTsHHYUwQIicp+HzQYQD+LfPwyelWfNTS7Fnvbvqt\nslz5eWrmgV/OqvDNI+7XfcccOOeBw58AQqmiXmHd1weSwtK3XJHV6L+69/0ucU8wH/8BPvvzgakf\nk9q7Cdx7nuaSVmpniLEONiZ0IicpAHQciMx4gtRYa5Laoix/H964+eBf07GprsllhwFumIZFU6DP\nha64p7Fvqmld3LJ2Ogy72UtSj7mn115eSyUROO8hV4TUqqt7kuk0GNoca8VCplFFXFIgUEJ21EYK\nijPDHY05WmXFbrKWrx92N/8L/uXqDLYtdk1ANy+A2RNd89KRv3bFReHqlNX1JFjyFrxwkZtPeNNc\nOPfvB8fTqiv85M3wxGeMJ/KSApDjX83KkkYsPjBHp7zcdbjatQZ2r4FtS90gbFsWusre469zZfLR\ncW7/riccODZQBsV7wz9q56Afu3qC4n2ugrj3eTDgqvDGZEw1IisptMqC+Fb0LV/NfCs+avp2rXbl\n7PMnH+iFCxCd4BL8sFugx6muorYm/qjwJwTwKqc/CXcUxtQpspKCCHQcSK/1K62iuSnbsQI++j38\n8AEg7qY/8m5XBt+6m+uZ2xyHojamGYispADQcSCdV31OSVFBuCMxhyrKgy/+6ppqRifAKb+DgddY\ns0tjGlEEJoVB+CmnY9Eq4MxwR2MqbP8BJl3iZvIa9GM47b/cBO7GmEYVgUnBVTZ3K/khzIGYSutn\nwOQr3MBzN3xkE7YYE0aRlxRSOpIf3ZpjileEOxJTuAeWvQPv3g0pHeGa16B193BHZUxEi7ykIMK2\npL70K15FWaCcKJunOfR2r4PP/tslgZhEV1+wbYkb5lnLXSetq16BxIxwR2pMxIu8pADsTuvLwF1f\nsS8/j9TUVuEOp+VShfmT4P3xgELGMW50z5IC14po5K+h20hXXBTMmEPGmJCLyKSQn94f3xqlbNWX\nMOiCcIfT8hTvg1XT3OQyKz5yvXkv/JfrsWuMadIiMins7XQSm2e1JnXOk5YUjlSgFJa+7SaN6XmG\nm8jFH+WGnFj2Dsyb5Mb4CZS4OQjO+jMMv83m/DWmmYjIpJAYH8/EstH8fuMk2DgXOg0Kd0hNX/52\nmP2MW/K3gC/ajSuU1M5N7LLyE9i/E1K7uPkGjh3tpn60YiFjmpWITAppCTG8HDiV3yRMJfqbR9xM\nW6Z6u9bAN4+6uoGyIvd0MPQRLxF8CvNedLPa9TgVjr8Wup9mTwXGNGMRmRQy0+LJJ4FlmZfRf8m/\n3Rg71hTycF89DJ/+0fUfGHAlnPBzN+dvhd7nuMUY02JE5E+6jKRYYqJ8TEu92N3wvv1nuENqer5+\nBD65F44bA3cugDGPHpwQjDEtUkQmBZ9PyEyLZ3lBovsFPO9FV2ZunO+egI//C/peBJdMhJQO4Y7I\nGNNIIjIpAHRqFU/u7v0w/HZXVr749XCHFH7F+fDJffDBb+C48+Hip13LImNMxKgzKYjIbBG5XURa\nVC+vzFYJ5O4uhLa9Ib0n/PBhuEMKn/Jy97T06PHw1UOQcw1c8oy1HDImAgXzpHAl0BGYJSIvi8go\nkeY/aWxmq3h2FpSwv6TMzZO7drr7pRxp1n8HT58Kb93uJru/4RO48J8QFRPuyIwxYVBnUlDVlar6\n/4BewEvAM8B6EfmjiDSBKa3qJ7NVPAAbdxdCr1Gus9Xqz8MbVGPauwleuxGeGQX521xR0Y2fQOch\n4Y7MGBNGQdUpiEg28Hfgb8BrwKXAXuCzWo7pLCLTRGSpiCwWkTur2UdE5BERWSkiC0Sk0XqRZbZK\nAHBFSF1OgNgUb6avCLBwCvxrOCyZCiPvgZ/PhuzL3cx0xpiIVmctoojMAfYAE4HxqlrsbZohIiNq\nObQMuFtV54pIMjBHRD5W1SVV9hkNHOMtw4DHvb8h19l7UsjdvR/8baHn6bDiY1e+3lI7XxXlwXv3\nwIJX3MikFz8F6T3CHZUxpgkJpmnJZaq6uroNqnpxTQep6mZgs/d6n4gsBToBVZPCBcDzqqrAdyKS\nJiIdvGNDKiMplhi/zz0pgKtXWPwGbPm+ciKeFmX3WnjxEtdR7+TfuCcEq0g2xhwimJ/EeV4Rz1wR\nmSMi/xCR9CP5EBHJAgYCMw7Z1AnYUOV9rrfu0OPHea2gZm/f3jD9CXw+8Zqlekmh55mAtMxWSJu/\nh4lnQcEO+OnbcOrvLCEYY6oVTFJ4GdgOXIKrS9gOvBLsB4hIEq4e4i5V3Xvo5moO0cNWqD6lqoNV\ndXCbNm2C/eg6ZVb0VQBITHfj+jfXegU97D+bs2oaPHuuG8Du+g8h66TGjcsY06wEkxRaq+p/q+oa\nb/kTkBbMyUUkGpcQJqlqdb3DcoHOVd5nApuCOXdDyKz6pACuFdKmebBvS2OFUL387W6KyryNwe2/\ndzP8YwC8cQuU7D+wfuEUmHQZpHWBGz92fTKMMaYWwSSFaSJypYj4vOVy4N26DvL6MkwElqrqgzXs\nNhX4idcKaTiQ1xj1CRUyWyWws6CEwpKAW9FrtPv7yX0QKGusMA437wWY9X/wwoVQsLP2fcsD8PpN\nLpF9/7JrYrpnvRuq4rUb3NPPde+5OZCNMaYOwVQ03wz8EnjRe+8DCkTkl4CqakoNx40AfgwsFJH5\n3rrfAV1wBz4BvAecA6wE9gPX1eci6quyr8Ke/fRsmwzt+sDJ4+GLCW72sEsmQnRcY4bk/PABpHRy\nN/dJl7h6gNjk6vf94n9dx7sLH4eEdNf34J/DobQAep8XvmswxjRLdSYFVa3hblTncV9RfZ1B1X0U\nuL0+528IFUlhw+5ClxQATv0txLdy4/9MuhSufAniasp7IVCwAzbMdC2EOg6El6+CyWPh6imH39xX\nfw5f/BUGXAU5V7l1N02DN8ZBp+Ph7Ang8zde7MaYZi/YzmtjROQBbzkv1EE1loM6sFU1/BbXw3f9\nt/DSFQeX04faDx8C6mYuO/ZsuOgJ9yQw9WcHVybvWg2v3QQZveDcBw6sz+gJN30G5/zNEoIx5ogF\nMyDeBOBOXP+CJcCd3rpmr01lX4VqbvrZl7vOXeu/hVd/DGUljRPUD+9DckfoMOBAHKf9Fyz8D3z5\nN7du91r49/lQXgaXPw8xiY0TmzGmxQumTuEcIEdVywFE5DlgHjA+lIE1hsP6Khyq3yVukLy373CV\nuZc+E9pf32XFrgnpoUNO/Ohu2LkSpv3ZJYDvnoCSfFfXYC2KjDENKNjxHKo2QU0NRSDhcliz1EMd\n/1M460+w5E2Ych2U1rJvMMqKYeeq6retne5u9hWtoCqIwPn/cGM0ffg7N1zFT96EDtlHF4sxxhwi\nmCeFvwDzRGQaruJ4JPDbkEbViDqlxbN06dbadzrx54DAR793fQfGToaktvX7wI/+C2Y+CZlDYOg4\n6HMBRMW6bcvfh+gE6Dby8OOiYuGKSfDxH2DI9S1zKA7TLJSWlpKbm0tRUVG4QzHViIuLIzMzk+jo\n+o1aUGtS8PoafAUMB4bgksJvVDXMvbsaTmareHbku74K8TG1FA2d+DNoleWKkZ4+Da561TVhPRKF\nu10fhMwh7vXrN7lf/sNuhsE3wPIPoMdpNTchTUx3cx0YE0a5ubkkJyeTlZVFC5hapUVRVXbu3Elu\nbi7dunWr1zlqLT7ymoy+qaqbVXWqqr7VkhICHGiBtHFPEC2MjjvPdQQLlMIzZ8Par4/sw+Y8B6X7\n4byH4fZZ8OM3XIXyZ3+CB4+DvbluYD5jmrCioiLS09MtITRBIkJ6evpRPcUFU6fwnYi02JlXKvsq\n7AqyrqDjQDdkRHI7eOEiWPJWcMcFSmHmU65oqH0/Nzx3j9Pgmtfglq+hz4Wueemx59TzSoxpPJYQ\nmq6j/W6CSQqnAt+KyCpvIpyFIrLgqD61CenRJgmAH7buC/6gtC5ucLkOA+DVn8K3/6x5QLoKS6fC\n3o0w/LbDt7XvBxc/CT+b5YqIjDE12rlzJzk5OeTk5NC+fXs6depU+b6kJLim49dddx3Lly8PSXy7\ndu3iiSeeCMm5G0MwFc2j696l+WqVGEPH1DiWbD50ANc6JLSGn7x1oF5g/bcw5jGIT4O1X7kioeJ8\nOO3/uSKhb/8FrbvDMaNCcyHGRIj09HTmz3cj59x3330kJSXxq1/96qB9VBVVxVfDhFnPPvtsyOKr\nSAq33HJLyD4jlIJ5UviTqq6rugB/CnVgjalPxxSWbDrCpAAQkwCXvwBn/jcsew+eHAkvXAz/Phd2\nr4OyIph8pauY3jgbht3acmd1MybMVq5cSb9+/bjlllsYNGgQmzdvZty4cQwePJi+ffty//33V+57\n0kknMX/+fMrKykhLS2P8+PEMGDCAE044gW3bth127s8++4wBAwaQk5PDoEGDKCgoAGDChAkMHTqU\n7OzsyvOPHz+e5cuXk5OTw/jxza87VzBPCn2rvhERP3B8aMIJjz4dUvhs2TaKSgPERR9h5zSfD0bc\nAZ2HwZTrYeMcOPN+19zUFwWzn4HP/+LGU6oYn8iYFuKPby+u3w+qWvTpmMK95/ete8dqLFmyhGef\nfbay+GbChAm0bt2asrIyTj31VC699FL69Dm41WBeXh4nn3wyEyZM4Je//CXPPPPMYTfzv/3tbzz1\n1FMMGzaM/Px84uLieO+991i/fj0zZsxAVTnnnHP45ptvmDBhAitXrqx8mmluakwKIvJb3Kim8SJS\n8a0LUAI81QixNZo+HVMoV1i+ZR8DOgc1VcThugxzdQLowcNODLsZBlwJJQUQm9Qg8RpjqtejRw+G\nDDnQLmby5MlMnDiRsrIyNm3axJIlSw5LCvHx8Ywe7UrJjz/+eKZPn37YeUeMGMFdd93FVVddxSWX\nXEJSUhIfffQR77//PgMHuj5D+fn5/PDDD7RtW88+TE1EjUlBVf8C/EVE/qKqLaazWnX6dHCdtJds\n3lv/pACuOKk6caluMaaFqe8v+lBJTDzwg2zFihX84x//YObMmaSlpXHNNddU21QzJiam8rXf76es\n7PC5VH7/+98zZswY3n33XYYMGcLnn3+OqvL73/+eG2644aB9V65c2YBX1PjqLOBW1d+KSCcROVFE\nRlYsjRFcY8lsFU9ybFSDPwYbY8Jn7969JCcnk5KSwubNm/nww/rPv75q1Sqys7P57W9/y8CBA1m+\nfDmjRo1i4sSJlfULubm57Nixg+TkZPbtO4LWjE1MnXUK3oioV+JGSPWmKEOBL0MYV6Py+YTjOqQc\neQskY0yTNWjQIPr06UO/fv3o3r07I0aMqPe5HnjgAaZPn47P5yM7O5uzzjqLmJgYli1bxvDhwwFI\nTk7mpZdeIisri8GDB9O/f3/OPfdcJkxoXoNKi9bRvl5ElgPZqlrcOCHVbvDgwTp79uwGP+99Uxfz\n6uwNLLpvFD6fdcwxpiZLly7luOOOC3cYphbVfUciMkdVB9d1bDDtI1cD9RtZqRnp0yGF/SUB1u1q\nxAl1jDGmiQmmSep+YL6IfApUPi2o6h0hiyoM+nR0U24u2bSXbhk2aY0xJjIFkxSmekuL1rNtElE+\nYcnmPM7N7hDucIwxJizqTAqq+pyIxANdVDU0g4U0AXHRfnq2TbIWSMaYiBbMHM3nA/OBD7z3OSLS\nIp8crAWSMSbSBVPRfB8wFNgDoKrzgfrN3tDE9emQwta9xezMbxINrYwxptEFkxTKVDXvkHV1jBPd\nPFVUNi/d3Hw7nhjT0p1yyimHdUR7+OGHue22aoalryIpyQ0zs2nTJi699NIaz11Xk/eHH36Y/fsP\ntFI855xz2LNnTzChN5i1a9fy0ksvheTcwSSFRSJyFeAXkWNE5FHgm5BEE2Z9vaQwf8PuMEdijKnJ\n2LFjefnllw9a9/LLLzN27Nigju/YsSNTpkyp9+cfmhTee+890tKOYnicegh3Uvg5bqTUYuAlIA+4\nq66DROQZEdkmIotq2H6KiOSJyHxv+cORBB4KaQkx9GqXxMy1lhSMaaouvfRS3nnnHYqLXTHv2rVr\n2bRpEyeddBL5+fmcfvrpDBo0iP79+/PWW4fPjLh27Vr69esHQGFhIVdeeSXZ2dlcccUVFBYemIHx\n1ltvrRx2+9577wXgkUceYdP91n79AAAb9UlEQVSmTZx66qmceuqpAGRlZbFjxw4AHnzwQfr160e/\nfv14+OGHKz/vuOOO46abbqJv376cddZZB31Ohf/85z/069ePAQMGMHKkG0koEAhwzz33MGTIELKz\ns3nyyScBNzz39OnTycnJ4aGHHmqQ/64Vgml9tB/4f95yJP4NPAY8X8s+01X1vCM8b0gN7daaN+dt\noixQTpTf5j4wplbvj4ctCxv2nO37w+iah4ZIT09n6NChfPDBB1xwwQW8/PLLXHHFFYgIcXFxvPHG\nG6SkpLBjxw6GDx/OmDFjapyi8vHHHychIYEFCxawYMECBg0aVLntz3/+M61btyYQCHD66aezYMEC\n7rjjDh588EGmTZtGRkbGQeeaM2cOzz77bOVQ2sOGDePkk0+mVatWrFixgsmTJ/P0009z+eWX89pr\nr3HNNdccdPz999/Phx9+SKdOnSqLoyZOnEhqaiqzZs2iuLiYESNGcNZZZzFhwgQeeOAB3nnnnfr+\nV65RyO56qvolsCtU5w+VIVmtyS8us3oFY5qwqkVIVYuOVJXf/e53ZGdnc8YZZ7Bx40a2bt1a43m+\n/PLLyptzdnY22dnZldteffVVBg0axMCBA1m8eDFLliypNaavvvqKiy66iMTERJKSkrj44osrh+Hu\n1q0bOTk5gBuee+3atYcdP2LECK699lqefvppAgE3zNxHH33E888/T05ODsOGDWPnzp2sWLEiyP9K\n9RNM57VQOkFEvgc2Ab9S1cXV7SQi44BxAF26dAlpQEO7tQZg5tpd9M+04a6NqVUtv+hD6cILL+SX\nv/wlc+fOpbCwsPIX/qRJk9i+fTtz5swhOjqarKysaofLrqq6p4g1a9bwwAMPMGvWLFq1asW1115b\n53lqG0cuNja28rXf76+2+OiJJ55gxowZvPvuu+Tk5DB//nxUlUcffZRRow6exvfzzz+vNZajEc7y\nkblAV1UdADwKvFnTjqr6lKoOVtXBbdq0CWlQHVLj6dw6nplrdob0c4wx9ZeUlMQpp5zC9ddff1AF\n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\noLJreBRq678AAAAASUVORK5CYII=\n",
SoleneDc's avatar
SoleneDc committed
625
      "text/plain": [
SoleneDc's avatar
SoleneDc committed
626
       "<matplotlib.figure.Figure at 0x181f5cb6a0>"
SoleneDc's avatar
SoleneDc committed
627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "train, =plt.plot(history.history['acc'], label='Train set')\n",
    "val, =plt.plot(history.history['val_acc'], label='Validation set')\n",
    "plt.title('model accuracy')\n",
    "plt.ylabel('Accuracy')\n",
    "plt.xlabel('Epochs')\n",
    "plt.legend(handles=[train, val])\n",
    "plt.show()\n",
    "train, =plt.plot(history.history['loss'], label='Train set')\n",
    "val, =plt.plot(history.history['val_loss'], label='Validation set')\n",
    "plt.title('model Loss')\n",
    "plt.ylabel('Cross entropy')\n",
    "plt.xlabel('Epochs')\n",
    "plt.legend(handles=[train, val])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
Hachemin Pierre-Yves's avatar
Hachemin Pierre-Yves committed
657
   "outputs": [],
SoleneDc's avatar
SoleneDc committed
658
   "source": []
Hachemin Pierre-Yves's avatar
Hachemin Pierre-Yves committed
659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676
  }
 ],
 "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",
SoleneDc's avatar
SoleneDc committed
677
   "version": "3.6.3"
Hachemin Pierre-Yves's avatar
Hachemin Pierre-Yves committed
678 679 680 681 682
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}