From 26ceb97d6dcc1d25eca019027c675c64ad0995e3 Mon Sep 17 00:00:00 2001 From: Jean-Luc Parouty <Jean-Luc.Parouty@grenoble-inp.fr> Date: Tue, 7 Jan 2020 00:25:46 +0100 Subject: [PATCH] update GTSRB --- .gitignore | 2 +- GTSRB/03-Tracking-and-visualizing.ipynb | 147 ++++++++++++++---------- 2 files changed, 87 insertions(+), 62 deletions(-) diff --git a/.gitignore b/.gitignore index 4d5c4f4..eabde99 100755 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,6 @@ */.ipynb_checkpoints/* __pycache__ */__pycache__/* -/run/** +run/ */data/* !/GTSRB/data/dataset.tar.gz diff --git a/GTSRB/03-Tracking-and-visualizing.ipynb b/GTSRB/03-Tracking-and-visualizing.ipynb index 9e11231..6588113 100644 --- a/GTSRB/03-Tracking-and-visualizing.ipynb +++ b/GTSRB/03-Tracking-and-visualizing.ipynb @@ -32,7 +32,7 @@ "text": [ "IDLE 2020 - Practical Work Module\n", " Version : 0.1.1\n", - " Run time : Monday 6 January 2020, 20:52:54\n", + " Run time : Monday 6 January 2020, 23:42:11\n", " Matplotlib style : idle/talk.mplstyle\n", " TensorFlow version : 2.0.0\n", " Keras version : 2.2.4-tf\n" @@ -76,8 +76,8 @@ "text": [ "Dataset loaded, size=247.6 Mo\n", "\n", - "CPU times: user 0 ns, sys: 297 ms, total: 297 ms\n", - "Wall time: 330 ms\n" + "CPU times: user 0 ns, sys: 344 ms, total: 344 ms\n", + "Wall time: 498 ms\n" ] } ], @@ -172,18 +172,18 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "batch_size = 64\n", "num_classes = 43\n", - "epochs = 20" + "epochs = 10" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -220,6 +220,8 @@ } ], "source": [ + "tf.keras.backend.clear_session()\n", + "\n", "model = keras.models.Sequential()\n", "model.add( keras.layers.Conv2D(96, (3,3), activation='relu', input_shape=(img_lx, img_ly, img_lz)))\n", "model.add( keras.layers.MaxPooling2D((2, 2)))\n", @@ -246,19 +248,23 @@ " - **TensorBoard** \n", "Training logs, which can be visualised with Tensorboard. \n", "`#tensorboard --logdir ./run/logs` \n", - " - model backup" + "IMPORTANT : Relancer tensorboard à chaque run\n", + " - **model backup**" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 25, "metadata": {}, "outputs": [], "source": [ - "# reload(ooo)\n", - "# ---- Callback for tensorboard\n", - "log_dir=\"./run/logs/\" + ooo.tag_now()\n", - "tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)" + "# ---- Callback tensorboard\n", + "log_dir = \"./run/logs/\" + ooo.tag_now()\n", + "tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)\n", + "\n", + "# ---- Callback ModelCheckpoint\n", + "save_dir = \"./run/models\"\n", + "checkpoint_callback = tf.keras.callbacks.ModelCheckpoint(filepath=save_dir, verbose=0, monitor='accuracy', save_best_only=True)" ] }, { @@ -270,56 +276,46 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Train on 3000 samples, validate on 12630 samples\n", - "Epoch 1/20\n", - "3000/3000 [==============================] - 12s 4ms/sample - loss: 3.4839 - accuracy: 0.0740 - val_loss: 3.1409 - val_accuracy: 0.1995\n", - "Epoch 2/20\n", - "3000/3000 [==============================] - 12s 4ms/sample - loss: 2.4676 - accuracy: 0.3067 - val_loss: 2.1162 - val_accuracy: 0.3968\n", - "Epoch 3/20\n", - "3000/3000 [==============================] - 13s 4ms/sample - loss: 1.4458 - accuracy: 0.5543 - val_loss: 1.4468 - val_accuracy: 0.5862\n", - "Epoch 4/20\n", - "3000/3000 [==============================] - 14s 5ms/sample - loss: 0.9291 - accuracy: 0.7067 - val_loss: 1.1903 - val_accuracy: 0.6622\n", - "Epoch 5/20\n", - "3000/3000 [==============================] - 14s 5ms/sample - loss: 0.6027 - accuracy: 0.8030 - val_loss: 0.8067 - val_accuracy: 0.7900\n", - "Epoch 6/20\n", - "3000/3000 [==============================] - 14s 5ms/sample - loss: 0.3835 - accuracy: 0.8670 - val_loss: 0.8453 - val_accuracy: 0.7925\n", - "Epoch 7/20\n", - "3000/3000 [==============================] - 14s 5ms/sample - loss: 0.2666 - accuracy: 0.9157 - val_loss: 0.7578 - val_accuracy: 0.8256\n", - "Epoch 8/20\n", - "3000/3000 [==============================] - 14s 5ms/sample - loss: 0.2045 - accuracy: 0.9307 - val_loss: 0.8074 - val_accuracy: 0.8300\n", - "Epoch 9/20\n", - "3000/3000 [==============================] - 14s 5ms/sample - loss: 0.1370 - accuracy: 0.9567 - val_loss: 0.7071 - val_accuracy: 0.8588\n", - "Epoch 10/20\n", - "3000/3000 [==============================] - 12s 4ms/sample - loss: 0.0964 - accuracy: 0.9707 - val_loss: 0.7275 - val_accuracy: 0.8622\n", - "Epoch 11/20\n", - "3000/3000 [==============================] - 13s 4ms/sample - loss: 0.0654 - accuracy: 0.9803 - val_loss: 0.7073 - val_accuracy: 0.8661\n", - "Epoch 12/20\n", - "3000/3000 [==============================] - 13s 4ms/sample - loss: 0.0806 - accuracy: 0.9757 - val_loss: 0.8265 - val_accuracy: 0.8637\n", - "Epoch 13/20\n", - "3000/3000 [==============================] - 13s 4ms/sample - loss: 0.0854 - accuracy: 0.9743 - val_loss: 0.7547 - val_accuracy: 0.8635\n", - "Epoch 14/20\n", - "3000/3000 [==============================] - 14s 5ms/sample - loss: 0.0463 - accuracy: 0.9860 - val_loss: 0.7248 - val_accuracy: 0.8846\n", - "Epoch 15/20\n", - "3000/3000 [==============================] - 14s 5ms/sample - loss: 0.0425 - accuracy: 0.9917 - val_loss: 0.7266 - val_accuracy: 0.8785\n", - "Epoch 16/20\n", - "3000/3000 [==============================] - 12s 4ms/sample - loss: 0.0322 - accuracy: 0.9923 - val_loss: 0.7501 - val_accuracy: 0.8777\n", - "Epoch 17/20\n", - "3000/3000 [==============================] - 14s 5ms/sample - loss: 0.0375 - accuracy: 0.9870 - val_loss: 0.7782 - val_accuracy: 0.8811\n", - "Epoch 18/20\n", - "3000/3000 [==============================] - 14s 5ms/sample - loss: 0.0557 - accuracy: 0.9857 - val_loss: 0.6846 - val_accuracy: 0.8760\n", - "Epoch 19/20\n", - "3000/3000 [==============================] - 14s 5ms/sample - loss: 0.0100 - accuracy: 0.9987 - val_loss: 0.7676 - val_accuracy: 0.8873\n", - "Epoch 20/20\n", - "3000/3000 [==============================] - 14s 5ms/sample - loss: 0.0025 - accuracy: 1.0000 - val_loss: 0.7481 - val_accuracy: 0.8993\n", - "CPU times: user 17min 9s, sys: 5min 55s, total: 23min 4s\n", - "Wall time: 4min 29s\n" + "Train on 3000 samples, validate on 500 samples\n", + "Epoch 1/10\n", + "2944/3000 [============================>.] - ETA: 0s - loss: 3.4893 - accuracy: 0.0676INFO:tensorflow:Assets written to: ./run/models/assets\n", + "3000/3000 [==============================] - 8s 3ms/sample - loss: 3.4847 - accuracy: 0.0690 - val_loss: 3.2739 - val_accuracy: 0.1640\n", + "Epoch 2/10\n", + "2944/3000 [============================>.] - ETA: 0s - loss: 2.4907 - accuracy: 0.3227INFO:tensorflow:Assets written to: ./run/models/assets\n", + "3000/3000 [==============================] - 7s 2ms/sample - loss: 2.4802 - accuracy: 0.3250 - val_loss: 2.0143 - val_accuracy: 0.3900\n", + "Epoch 3/10\n", + "2944/3000 [============================>.] - ETA: 0s - loss: 1.3810 - accuracy: 0.5591INFO:tensorflow:Assets written to: ./run/models/assets\n", + "3000/3000 [==============================] - 7s 2ms/sample - loss: 1.3794 - accuracy: 0.5593 - val_loss: 1.3322 - val_accuracy: 0.6200\n", + "Epoch 4/10\n", + "2944/3000 [============================>.] - ETA: 0s - loss: 0.8501 - accuracy: 0.7286INFO:tensorflow:Assets written to: ./run/models/assets\n", + "3000/3000 [==============================] - 7s 2ms/sample - loss: 0.8426 - accuracy: 0.7323 - val_loss: 1.1705 - val_accuracy: 0.6580\n", + "Epoch 5/10\n", + "2944/3000 [============================>.] - ETA: 0s - loss: 0.5132 - accuracy: 0.8400INFO:tensorflow:Assets written to: ./run/models/assets\n", + "3000/3000 [==============================] - 8s 3ms/sample - loss: 0.5087 - accuracy: 0.8413 - val_loss: 0.9281 - val_accuracy: 0.7360\n", + "Epoch 6/10\n", + "2944/3000 [============================>.] - ETA: 0s - loss: 0.3740 - accuracy: 0.8787INFO:tensorflow:Assets written to: ./run/models/assets\n", + "3000/3000 [==============================] - 8s 3ms/sample - loss: 0.3763 - accuracy: 0.8783 - val_loss: 0.9252 - val_accuracy: 0.7520\n", + "Epoch 7/10\n", + "2944/3000 [============================>.] - ETA: 0s - loss: 0.2671 - accuracy: 0.9141INFO:tensorflow:Assets written to: ./run/models/assets\n", + "3000/3000 [==============================] - 8s 3ms/sample - loss: 0.2677 - accuracy: 0.9140 - val_loss: 0.8153 - val_accuracy: 0.8000\n", + "Epoch 8/10\n", + "2944/3000 [============================>.] - ETA: 0s - loss: 0.1599 - accuracy: 0.9535INFO:tensorflow:Assets written to: ./run/models/assets\n", + "3000/3000 [==============================] - 8s 3ms/sample - loss: 0.1588 - accuracy: 0.9543 - val_loss: 0.7000 - val_accuracy: 0.8500\n", + "Epoch 9/10\n", + "2944/3000 [============================>.] - ETA: 0s - loss: 0.1282 - accuracy: 0.9626INFO:tensorflow:Assets written to: ./run/models/assets\n", + "3000/3000 [==============================] - 8s 3ms/sample - loss: 0.1271 - accuracy: 0.9633 - val_loss: 0.7833 - val_accuracy: 0.8080\n", + "Epoch 10/10\n", + "2944/3000 [============================>.] - ETA: 0s - loss: 0.0979 - accuracy: 0.9715INFO:tensorflow:Assets written to: ./run/models/assets\n", + "3000/3000 [==============================] - 8s 3ms/sample - loss: 0.0971 - accuracy: 0.9720 - val_loss: 0.7634 - val_accuracy: 0.8420\n", + "CPU times: user 4min 26s, sys: 1min 31s, total: 5min 58s\n", + "Wall time: 1min 15s\n" ] } ], @@ -330,8 +326,8 @@ " batch_size=batch_size,\n", " epochs=epochs,\n", " verbose=1,\n", - " validation_data=(x_test, y_test),\n", - " callbacks=[tensorboard_callback] )" + " validation_data=(x_test[:500], y_test[:500]),\n", + " callbacks=[tensorboard_callback, checkpoint_callback] )" ] }, { @@ -382,10 +378,39 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "total 176\n", + "drwxr-xr-x 1 pjluc pjluc 512 Jan 7 00:16 assets\n", + "-rw-r--r-- 1 pjluc pjluc 168427 Jan 7 00:17 saved_model.pb\n", + "drwxr-xr-x 1 pjluc pjluc 512 Jan 7 00:17 variables\n", + "\u001b[01;34m./run/models\u001b[00m\n", + "├── \u001b[01;34massets\u001b[00m\n", + "├── saved_model.pb\n", + "└── \u001b[01;34mvariables\u001b[00m\n", + " ├── variables.data-00000-of-00001\n", + " └── variables.index\n", + "\n", + "2 directories, 3 files\n" + ] + } + ], + "source": [ + "!ls -l {save_dir}\n", + "!tree {save_dir}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A suivre : https://www.tensorflow.org/tutorials/keras/save_and_load" + ] } ], "metadata": { -- GitLab