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