From 3f9304f3056a102b7efa931e729258811066bc07 Mon Sep 17 00:00:00 2001
From: "Jean-Luc Parouty Jean-Luc.Parouty@simap.grenoble-inp.fr"
 <paroutyj@bigfoot3.u-ga.fr>
Date: Thu, 9 Jan 2020 00:40:26 +0100
Subject: [PATCH] Test models on GPU

---
 GTSRB/02-First-convolutions.ipynb | 144 ++++++++++++++++++------------
 1 file changed, 86 insertions(+), 58 deletions(-)

diff --git a/GTSRB/02-First-convolutions.ipynb b/GTSRB/02-First-convolutions.ipynb
index 3730973..20ee6ca 100644
--- a/GTSRB/02-First-convolutions.ipynb
+++ b/GTSRB/02-First-convolutions.ipynb
@@ -34,7 +34,7 @@
      "text": [
       "IDLE 2020 - Practical Work Module\n",
       "  Version            : 0.1.1\n",
-      "  Run time           : Wednesday 8 January 2020, 17:47:24\n",
+      "  Run time           : Wednesday 8 January 2020, 23:42:33\n",
       "  Matplotlib style   : idle/talk.mplstyle\n",
       "  TensorFlow version : 2.0.0\n",
       "  Keras version      : 2.2.4-tf\n"
@@ -69,7 +69,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 77,
+   "execution_count": 2,
    "metadata": {},
    "outputs": [
     {
@@ -78,8 +78,8 @@
      "text": [
       "Dataset loaded, size=911.6 Mo\n",
       "\n",
-      "CPU times: user 0 ns, sys: 360 ms, total: 360 ms\n",
-      "Wall time: 362 ms\n"
+      "CPU times: user 0 ns, sys: 460 ms, total: 460 ms\n",
+      "Wall time: 6.21 s\n"
      ]
     }
    ],
@@ -117,7 +117,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 78,
+   "execution_count": 3,
    "metadata": {},
    "outputs": [
     {
@@ -174,18 +174,18 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 79,
+   "execution_count": 106,
    "metadata": {},
    "outputs": [],
    "source": [
     "batch_size  =  64\n",
     "num_classes =  43\n",
-    "epochs      =  5"
+    "epochs      =  16"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 89,
+   "execution_count": 107,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -229,23 +229,24 @@
     "\n",
     "def get_model_v3():\n",
     "    model = keras.models.Sequential()\n",
-    "    model.add( keras.layers.Conv2D(96, (3,3), activation='relu', padding='same', input_shape=(img_lx, img_ly, img_lz)))\n",
+    "    model.add( keras.layers.Conv2D(32, (3,3),   activation='relu', input_shape=(img_lx, img_ly, img_lz)))\n",
     "    model.add( keras.layers.MaxPooling2D((2, 2)))\n",
-    "    model.add( keras.layers.Dropout(0.2))\n",
+    "    model.add( keras.layers.Dropout(0.5))\n",
     "\n",
-    "    model.add( keras.layers.Conv2D(192, (3, 3), activation='relu', padding='same'))\n",
+    "    model.add( keras.layers.Conv2D(64, (3, 3), activation='relu'))\n",
     "    model.add( keras.layers.MaxPooling2D((2, 2)))\n",
-    "    model.add( keras.layers.Dropout(0.2))\n",
+    "    model.add( keras.layers.Dropout(0.5))\n",
     "\n",
-    "    model.add( keras.layers.Conv2D(256, (3, 3), activation='relu', padding='same'))\n",
+    "    model.add( keras.layers.Conv2D(128, (3, 3), activation='relu'))\n",
     "    model.add( keras.layers.MaxPooling2D((2, 2)))\n",
-    "    model.add( keras.layers.Dropout(0.2))\n",
+    "    model.add( keras.layers.Dropout(0.5))\n",
     "\n",
-    "    model.add( keras.layers.Flatten()) \n",
-    "    model.add( keras.layers.Dense(512, activation='relu'))\n",
-    "    model.add( keras.layers.Dropout(0.2))\n",
+    "    model.add( keras.layers.Conv2D(256, (3, 3), activation='relu'))\n",
+    "    model.add( keras.layers.MaxPooling2D((2, 2)))\n",
+    "    model.add( keras.layers.Dropout(0.5))\n",
     "\n",
-    "    model.add( keras.layers.Dense(512, activation='relu'))\n",
+    "    model.add( keras.layers.Flatten()) \n",
+    "    model.add( keras.layers.Dense(1152, activation='relu'))\n",
     "    model.add( keras.layers.Dropout(0.5))\n",
     "\n",
     "    model.add( keras.layers.Dense(43, activation='softmax'))\n",
@@ -254,55 +255,59 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 90,
+   "execution_count": 111,
    "metadata": {},
    "outputs": [
     {
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "Model: \"sequential_19\"\n",
+      "Model: \"sequential\"\n",
       "_________________________________________________________________\n",
       "Layer (type)                 Output Shape              Param #   \n",
       "=================================================================\n",
-      "conv2d_63 (Conv2D)           (None, 48, 48, 96)        960       \n",
+      "conv2d (Conv2D)              (None, 46, 46, 32)        320       \n",
+      "_________________________________________________________________\n",
+      "max_pooling2d (MaxPooling2D) (None, 23, 23, 32)        0         \n",
       "_________________________________________________________________\n",
-      "max_pooling2d_48 (MaxPooling (None, 24, 24, 96)        0         \n",
+      "dropout (Dropout)            (None, 23, 23, 32)        0         \n",
       "_________________________________________________________________\n",
-      "dropout_31 (Dropout)         (None, 24, 24, 96)        0         \n",
+      "conv2d_1 (Conv2D)            (None, 21, 21, 64)        18496     \n",
       "_________________________________________________________________\n",
-      "conv2d_64 (Conv2D)           (None, 24, 24, 192)       166080    \n",
+      "max_pooling2d_1 (MaxPooling2 (None, 10, 10, 64)        0         \n",
       "_________________________________________________________________\n",
-      "max_pooling2d_49 (MaxPooling (None, 12, 12, 192)       0         \n",
+      "dropout_1 (Dropout)          (None, 10, 10, 64)        0         \n",
       "_________________________________________________________________\n",
-      "dropout_32 (Dropout)         (None, 12, 12, 192)       0         \n",
+      "conv2d_2 (Conv2D)            (None, 8, 8, 128)         73856     \n",
       "_________________________________________________________________\n",
-      "conv2d_65 (Conv2D)           (None, 12, 12, 256)       442624    \n",
+      "max_pooling2d_2 (MaxPooling2 (None, 4, 4, 128)         0         \n",
       "_________________________________________________________________\n",
-      "max_pooling2d_50 (MaxPooling (None, 6, 6, 256)         0         \n",
+      "dropout_2 (Dropout)          (None, 4, 4, 128)         0         \n",
       "_________________________________________________________________\n",
-      "dropout_33 (Dropout)         (None, 6, 6, 256)         0         \n",
+      "conv2d_3 (Conv2D)            (None, 2, 2, 256)         295168    \n",
       "_________________________________________________________________\n",
-      "flatten_19 (Flatten)         (None, 9216)              0         \n",
+      "max_pooling2d_3 (MaxPooling2 (None, 1, 1, 256)         0         \n",
       "_________________________________________________________________\n",
-      "dense_65 (Dense)             (None, 512)               4719104   \n",
+      "dropout_3 (Dropout)          (None, 1, 1, 256)         0         \n",
       "_________________________________________________________________\n",
-      "dropout_34 (Dropout)         (None, 512)               0         \n",
+      "flatten (Flatten)            (None, 256)               0         \n",
       "_________________________________________________________________\n",
-      "dense_66 (Dense)             (None, 512)               262656    \n",
+      "dense (Dense)                (None, 1152)              296064    \n",
       "_________________________________________________________________\n",
-      "dropout_35 (Dropout)         (None, 512)               0         \n",
+      "dropout_4 (Dropout)          (None, 1152)              0         \n",
       "_________________________________________________________________\n",
-      "dense_67 (Dense)             (None, 43)                22059     \n",
+      "dense_1 (Dense)              (None, 43)                49579     \n",
       "=================================================================\n",
-      "Total params: 5,613,483\n",
-      "Trainable params: 5,613,483\n",
+      "Total params: 733,483\n",
+      "Trainable params: 733,483\n",
       "Non-trainable params: 0\n",
       "_________________________________________________________________\n"
      ]
     }
    ],
    "source": [
+    "tf.keras.backend.clear_session()\n",
+    "\n",
     "model = get_model_v3()\n",
     "\n",
     "model.summary()\n",
@@ -321,7 +326,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 91,
+   "execution_count": 112,
    "metadata": {},
    "outputs": [
     {
@@ -329,18 +334,40 @@
      "output_type": "stream",
      "text": [
       "Train on 39209 samples, validate on 12630 samples\n",
-      "Epoch 1/5\n",
-      "39209/39209 [==============================] - 6s 160us/sample - loss: 1.2276 - accuracy: 0.6518 - val_loss: 0.1684 - val_accuracy: 0.9474\n",
-      "Epoch 2/5\n",
-      "39209/39209 [==============================] - 6s 140us/sample - loss: 0.1075 - accuracy: 0.9666 - val_loss: 0.1226 - val_accuracy: 0.9625\n",
-      "Epoch 3/5\n",
-      "39209/39209 [==============================] - 5s 140us/sample - loss: 0.0603 - accuracy: 0.9819 - val_loss: 0.1489 - val_accuracy: 0.9572\n",
-      "Epoch 4/5\n",
-      "39209/39209 [==============================] - 5s 139us/sample - loss: 0.0465 - accuracy: 0.9855 - val_loss: 0.1102 - val_accuracy: 0.9687\n",
-      "Epoch 5/5\n",
-      "39209/39209 [==============================] - 5s 137us/sample - loss: 0.0394 - accuracy: 0.9874 - val_loss: 0.0998 - val_accuracy: 0.9727\n",
-      "CPU times: user 24.7 s, sys: 3.58 s, total: 28.3 s\n",
-      "Wall time: 28.1 s\n"
+      "Epoch 1/16\n",
+      "39209/39209 [==============================] - 3s 81us/sample - loss: 2.4208 - accuracy: 0.3102 - val_loss: 0.7642 - val_accuracy: 0.7483\n",
+      "Epoch 2/16\n",
+      "39209/39209 [==============================] - 3s 66us/sample - loss: 0.7524 - accuracy: 0.7564 - val_loss: 0.3062 - val_accuracy: 0.9110\n",
+      "Epoch 3/16\n",
+      "39209/39209 [==============================] - 3s 66us/sample - loss: 0.4660 - accuracy: 0.8507 - val_loss: 0.2012 - val_accuracy: 0.9437\n",
+      "Epoch 4/16\n",
+      "39209/39209 [==============================] - 3s 66us/sample - loss: 0.3529 - accuracy: 0.8866 - val_loss: 0.1578 - val_accuracy: 0.9536\n",
+      "Epoch 5/16\n",
+      "39209/39209 [==============================] - 3s 65us/sample - loss: 0.2962 - accuracy: 0.9050 - val_loss: 0.1439 - val_accuracy: 0.9614\n",
+      "Epoch 6/16\n",
+      "39209/39209 [==============================] - 3s 67us/sample - loss: 0.2676 - accuracy: 0.9170 - val_loss: 0.1240 - val_accuracy: 0.9660\n",
+      "Epoch 7/16\n",
+      "39209/39209 [==============================] - 3s 66us/sample - loss: 0.2362 - accuracy: 0.9248 - val_loss: 0.1272 - val_accuracy: 0.9667\n",
+      "Epoch 8/16\n",
+      "39209/39209 [==============================] - 3s 67us/sample - loss: 0.2242 - accuracy: 0.9303 - val_loss: 0.1183 - val_accuracy: 0.9671\n",
+      "Epoch 9/16\n",
+      "39209/39209 [==============================] - 3s 65us/sample - loss: 0.2118 - accuracy: 0.9365 - val_loss: 0.1093 - val_accuracy: 0.9709\n",
+      "Epoch 10/16\n",
+      "39209/39209 [==============================] - 3s 66us/sample - loss: 0.1984 - accuracy: 0.9395 - val_loss: 0.1124 - val_accuracy: 0.9725\n",
+      "Epoch 11/16\n",
+      "39209/39209 [==============================] - 3s 64us/sample - loss: 0.1950 - accuracy: 0.9404 - val_loss: 0.1098 - val_accuracy: 0.9712\n",
+      "Epoch 12/16\n",
+      "39209/39209 [==============================] - 3s 65us/sample - loss: 0.1882 - accuracy: 0.9432 - val_loss: 0.1068 - val_accuracy: 0.9727\n",
+      "Epoch 13/16\n",
+      "39209/39209 [==============================] - 3s 65us/sample - loss: 0.1856 - accuracy: 0.9442 - val_loss: 0.1172 - val_accuracy: 0.9702\n",
+      "Epoch 14/16\n",
+      "39209/39209 [==============================] - 3s 66us/sample - loss: 0.1760 - accuracy: 0.9468 - val_loss: 0.1249 - val_accuracy: 0.9694\n",
+      "Epoch 15/16\n",
+      "39209/39209 [==============================] - 3s 66us/sample - loss: 0.1732 - accuracy: 0.9469 - val_loss: 0.1091 - val_accuracy: 0.9719\n",
+      "Epoch 16/16\n",
+      "39209/39209 [==============================] - 3s 65us/sample - loss: 0.1628 - accuracy: 0.9500 - val_loss: 0.1026 - val_accuracy: 0.9743\n",
+      "CPU times: user 52.5 s, sys: 4.32 s, total: 56.8 s\n",
+      "Wall time: 41.9 s\n"
      ]
     }
    ],
@@ -363,15 +390,15 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 92,
+   "execution_count": 110,
    "metadata": {},
    "outputs": [
     {
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "Test loss      : 0.0998\n",
-      "Test accuracy  : 0.9727\n"
+      "Test loss      : 0.1051\n",
+      "Test accuracy  : 0.9770\n"
      ]
     }
    ],
@@ -388,15 +415,16 @@
    "source": [
     "---\n",
     "### Results :  \n",
+    "```\n",
     "set-24x24-L        : size=230 Mo, 90.67%  \n",
     "set-24x24-L-LHE    : size=230 Mo, 93.90%  \n",
     "set-24x24-RGB      : size=784 Mo, 92.82%  \n",
     "set-24x24-RGB-HE   : size=784 Mo, 92.64%  \n",
-    "set-48x48-L-LHE    : size=230 Mo, 97.21%  (v2)\n",
-    "set-48x48-RGB-HE   : size=xxx Mo, 96.94%  (v2)\n",
-    "set-48x48-L-LHE    : size=784 Mo, 97.24%  (v3)\n",
-    "\n",
-    "..."
+    "set-48x48-L-LHE    : size=230 Mo, 97.70%  (v2)  1'52\"  \n",
+    "set-48x48-RGB-HE   : size=xxx Mo, 96.94%  (v2)  \n",
+    "set-48x48-L-LHE    : size=784 Mo, 97.67%  (v3)  42\"  \n",
+    "...\n",
+    "```"
    ]
   },
   {
-- 
GitLab