From 0b778bde7f8fa09d89d214af791af92a50f7b5be Mon Sep 17 00:00:00 2001 From: lucile <lucile.audard@ecl20.ec-lyon.fr> Date: Fri, 1 Dec 2023 17:31:16 +0100 Subject: [PATCH] Update TD2 Deep Learning.ipynb --- TD2 Deep Learning.ipynb | 348 +++++++++++++++++++++++++++------------- 1 file changed, 240 insertions(+), 108 deletions(-) diff --git a/TD2 Deep Learning.ipynb b/TD2 Deep Learning.ipynb index 50e28fe..ba61415 100644 --- a/TD2 Deep Learning.ipynb +++ b/TD2 Deep Learning.ipynb @@ -216,7 +216,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 56, "id": "462666a2", "metadata": {}, "outputs": [ @@ -297,7 +297,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 52, "id": "317bf070", "metadata": {}, "outputs": [ @@ -361,41 +361,83 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 53, "id": "4b53f229", "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Exception ignored in: <function _ConnectionBase.__del__ at 0x00000220743E3100>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\lucil\\anaconda3\\Lib\\multiprocessing\\connection.py\", line 132, in __del__\n", + " self._close()\n", + " File \"c:\\Users\\lucil\\anaconda3\\Lib\\multiprocessing\\connection.py\", line 276, in _close\n", + " _CloseHandle(self._handle)\n", + "OSError: [WinError 6] Descripteur non valide\n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ - "Epoch: 0 \tTraining Loss: 45.727068 \tValidation Loss: 43.318010\n", - "Validation loss decreased (inf --> 43.318010). Saving model ...\n", - "Epoch: 1 \tTraining Loss: 38.408429 \tValidation Loss: 33.652277\n", - "Validation loss decreased (43.318010 --> 33.652277). Saving model ...\n", - "Epoch: 2 \tTraining Loss: 32.319058 \tValidation Loss: 30.753993\n", - "Validation loss decreased (33.652277 --> 30.753993). Saving model ...\n", - "Epoch: 3 \tTraining Loss: 29.549846 \tValidation Loss: 28.169669\n", - "Validation loss decreased (30.753993 --> 28.169669). Saving model ...\n", - "Epoch: 4 \tTraining Loss: 27.655829 \tValidation Loss: 27.654481\n", - "Validation loss decreased (28.169669 --> 27.654481). Saving model ...\n", - "Epoch: 5 \tTraining Loss: 26.222008 \tValidation Loss: 25.873263\n", - "Validation loss decreased (27.654481 --> 25.873263). Saving model ...\n", - "Epoch: 6 \tTraining Loss: 25.089649 \tValidation Loss: 25.455413\n", - "Validation loss decreased (25.873263 --> 25.455413). Saving model ...\n", - "Epoch: 7 \tTraining Loss: 24.132566 \tValidation Loss: 24.524804\n", - "Validation loss decreased (25.455413 --> 24.524804). Saving model ...\n", - "Epoch: 8 \tTraining Loss: 23.214103 \tValidation Loss: 23.883503\n", - "Validation loss decreased (24.524804 --> 23.883503). Saving model ...\n", - "Epoch: 9 \tTraining Loss: 22.452441 \tValidation Loss: 23.670456\n", - "Validation loss decreased (23.883503 --> 23.670456). Saving model ...\n", - "Epoch: 10 \tTraining Loss: 21.695399 \tValidation Loss: 23.130459\n", - "Validation loss decreased (23.670456 --> 23.130459). Saving model ...\n", - "Epoch: 11 \tTraining Loss: 21.011460 \tValidation Loss: 23.008460\n", - "Validation loss decreased (23.130459 --> 23.008460). Saving model ...\n", - "Epoch: 12 \tTraining Loss: 20.418336 \tValidation Loss: 23.139267\n", - "Epoch: 13 \tTraining Loss: 19.765256 \tValidation Loss: 22.010464\n", - "Validation loss decreased (23.008460 --> 22.010464). Saving model ...\n" + "Epoch: 0 \tTraining Loss: 45.059556 \tValidation Loss: 39.557325\n", + "Validation loss decreased (inf --> 39.557325). Saving model ...\n", + "Epoch: 1 \tTraining Loss: 35.579042 \tValidation Loss: 33.066320\n", + "Validation loss decreased (39.557325 --> 33.066320). Saving model ...\n", + "Epoch: 2 \tTraining Loss: 31.607093 \tValidation Loss: 29.799471\n", + "Validation loss decreased (33.066320 --> 29.799471). Saving model ...\n", + "Epoch: 3 \tTraining Loss: 29.119619 \tValidation Loss: 29.093758\n", + "Validation loss decreased (29.799471 --> 29.093758). Saving model ...\n", + "Epoch: 4 \tTraining Loss: 27.111406 \tValidation Loss: 27.282032\n", + "Validation loss decreased (29.093758 --> 27.282032). Saving model ...\n", + "Epoch: 5 \tTraining Loss: 25.549339 \tValidation Loss: 25.313205\n", + "Validation loss decreased (27.282032 --> 25.313205). Saving model ...\n", + "Epoch: 6 \tTraining Loss: 24.241423 \tValidation Loss: 24.094922\n", + "Validation loss decreased (25.313205 --> 24.094922). Saving model ...\n", + "Epoch: 7 \tTraining Loss: 23.120133 \tValidation Loss: 23.638516\n", + "Validation loss decreased (24.094922 --> 23.638516). Saving model ...\n", + "Epoch: 8 \tTraining Loss: 22.235612 \tValidation Loss: 23.520580\n", + "Validation loss decreased (23.638516 --> 23.520580). Saving model ...\n", + "Epoch: 9 \tTraining Loss: 21.346322 \tValidation Loss: 22.918185\n", + "Validation loss decreased (23.520580 --> 22.918185). Saving model ...\n", + "Epoch: 10 \tTraining Loss: 20.602771 \tValidation Loss: 22.855820\n", + "Validation loss decreased (22.918185 --> 22.855820). Saving model ...\n", + "Epoch: 11 \tTraining Loss: 19.811544 \tValidation Loss: 22.401531\n", + "Validation loss decreased (22.855820 --> 22.401531). Saving model ...\n", + "Epoch: 12 \tTraining Loss: 19.047554 \tValidation Loss: 22.725037\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Exception in thread QueueFeederThread:\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\lucil\\anaconda3\\Lib\\multiprocessing\\queues.py\", line 239, in _feed\n", + "Exception ignored in: <function _ConnectionBase.__del__ at 0x00000220743E3100>\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\lucil\\anaconda3\\Lib\\multiprocessing\\connection.py\", line 132, in __del__\n", + " File \"c:\\Users\\lucil\\anaconda3\\Lib\\multiprocessing\\connection.py\", line 276, in _close\n", + "OSError: [WinError 6] Descripteur non valide\n", + " reader_close()\n", + " File \"c:\\Users\\lucil\\anaconda3\\Lib\\multiprocessing\\connection.py\", line 177, in close\n", + " self._close()\n", + " File \"c:\\Users\\lucil\\anaconda3\\Lib\\multiprocessing\\connection.py\", line 276, in _close\n", + " _CloseHandle(self._handle)\n", + "OSError: [WinError 6] Descripteur non valide\n", + "\n", + "During handling of the above exception, another exception occurred:\n", + "\n", + "Traceback (most recent call last):\n", + " File \"c:\\Users\\lucil\\anaconda3\\Lib\\threading.py\", line 1038, in _bootstrap_inner\n", + " self.run()\n", + " File \"c:\\Users\\lucil\\anaconda3\\Lib\\threading.py\", line 975, in run\n", + " self._target(*self._args, **self._kwargs)\n", + " File \"c:\\Users\\lucil\\anaconda3\\Lib\\multiprocessing\\queues.py\", line 271, in _feed\n", + " queue_sem.release()\n", + "ValueError: semaphore or lock released too many times\n" ] }, { @@ -405,15 +447,18 @@ "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[1;32md:\\Users\\lucil\\Documents\\S9\\Apprentissage profond\\mod_4_6-td2\\TD2 Deep Learning.ipynb Cell 15\u001b[0m line \u001b[0;36m2\n\u001b[0;32m <a href='vscode-notebook-cell:/d%3A/Users/lucil/Documents/S9/Apprentissage%20profond/mod_4_6-td2/TD2%20Deep%20Learning.ipynb#X20sZmlsZQ%3D%3D?line=21'>22</a>\u001b[0m optimizer\u001b[39m.\u001b[39mzero_grad()\n\u001b[0;32m <a href='vscode-notebook-cell:/d%3A/Users/lucil/Documents/S9/Apprentissage%20profond/mod_4_6-td2/TD2%20Deep%20Learning.ipynb#X20sZmlsZQ%3D%3D?line=22'>23</a>\u001b[0m \u001b[39m# Forward pass: compute predicted outputs by passing inputs to the model\u001b[39;00m\n\u001b[1;32m---> <a href='vscode-notebook-cell:/d%3A/Users/lucil/Documents/S9/Apprentissage%20profond/mod_4_6-td2/TD2%20Deep%20Learning.ipynb#X20sZmlsZQ%3D%3D?line=23'>24</a>\u001b[0m output \u001b[39m=\u001b[39m model(data)\n\u001b[0;32m <a href='vscode-notebook-cell:/d%3A/Users/lucil/Documents/S9/Apprentissage%20profond/mod_4_6-td2/TD2%20Deep%20Learning.ipynb#X20sZmlsZQ%3D%3D?line=24'>25</a>\u001b[0m \u001b[39m# Calculate the batch loss\u001b[39;00m\n\u001b[0;32m <a href='vscode-notebook-cell:/d%3A/Users/lucil/Documents/S9/Apprentissage%20profond/mod_4_6-td2/TD2%20Deep%20Learning.ipynb#X20sZmlsZQ%3D%3D?line=25'>26</a>\u001b[0m loss \u001b[39m=\u001b[39m criterion(output, target)\n", - "File \u001b[1;32mc:\\Users\\lucil\\anaconda3\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1518\u001b[0m, in \u001b[0;36mModule._wrapped_call_impl\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1516\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_compiled_call_impl(\u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs) \u001b[39m# type: ignore[misc]\u001b[39;00m\n\u001b[0;32m 1517\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m-> 1518\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_call_impl(\u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs)\n", - "File \u001b[1;32mc:\\Users\\lucil\\anaconda3\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1527\u001b[0m, in \u001b[0;36mModule._call_impl\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1522\u001b[0m \u001b[39m# If we don't have any hooks, we want to skip the rest of the logic in\u001b[39;00m\n\u001b[0;32m 1523\u001b[0m \u001b[39m# this function, and just call forward.\u001b[39;00m\n\u001b[0;32m 1524\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m (\u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_backward_hooks \u001b[39mor\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_backward_pre_hooks \u001b[39mor\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_forward_hooks \u001b[39mor\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_forward_pre_hooks\n\u001b[0;32m 1525\u001b[0m \u001b[39mor\u001b[39;00m _global_backward_pre_hooks \u001b[39mor\u001b[39;00m _global_backward_hooks\n\u001b[0;32m 1526\u001b[0m \u001b[39mor\u001b[39;00m _global_forward_hooks \u001b[39mor\u001b[39;00m _global_forward_pre_hooks):\n\u001b[1;32m-> 1527\u001b[0m \u001b[39mreturn\u001b[39;00m forward_call(\u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs)\n\u001b[0;32m 1529\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m 1530\u001b[0m result \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m\n", - "\u001b[1;32md:\\Users\\lucil\\Documents\\S9\\Apprentissage profond\\mod_4_6-td2\\TD2 Deep Learning.ipynb Cell 15\u001b[0m line \u001b[0;36m1\n\u001b[0;32m <a href='vscode-notebook-cell:/d%3A/Users/lucil/Documents/S9/Apprentissage%20profond/mod_4_6-td2/TD2%20Deep%20Learning.ipynb#X20sZmlsZQ%3D%3D?line=16'>17</a>\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mforward\u001b[39m(\u001b[39mself\u001b[39m, x):\n\u001b[0;32m <a href='vscode-notebook-cell:/d%3A/Users/lucil/Documents/S9/Apprentissage%20profond/mod_4_6-td2/TD2%20Deep%20Learning.ipynb#X20sZmlsZQ%3D%3D?line=17'>18</a>\u001b[0m x \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mpool(F\u001b[39m.\u001b[39mrelu(\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mconv1(x)))\n\u001b[1;32m---> <a href='vscode-notebook-cell:/d%3A/Users/lucil/Documents/S9/Apprentissage%20profond/mod_4_6-td2/TD2%20Deep%20Learning.ipynb#X20sZmlsZQ%3D%3D?line=18'>19</a>\u001b[0m x \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mpool(F\u001b[39m.\u001b[39mrelu(\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mconv2(x)))\n\u001b[0;32m <a href='vscode-notebook-cell:/d%3A/Users/lucil/Documents/S9/Apprentissage%20profond/mod_4_6-td2/TD2%20Deep%20Learning.ipynb#X20sZmlsZQ%3D%3D?line=19'>20</a>\u001b[0m x \u001b[39m=\u001b[39m x\u001b[39m.\u001b[39mview(\u001b[39m-\u001b[39m\u001b[39m1\u001b[39m, \u001b[39m16\u001b[39m \u001b[39m*\u001b[39m \u001b[39m5\u001b[39m \u001b[39m*\u001b[39m \u001b[39m5\u001b[39m)\n\u001b[0;32m <a href='vscode-notebook-cell:/d%3A/Users/lucil/Documents/S9/Apprentissage%20profond/mod_4_6-td2/TD2%20Deep%20Learning.ipynb#X20sZmlsZQ%3D%3D?line=20'>21</a>\u001b[0m x \u001b[39m=\u001b[39m F\u001b[39m.\u001b[39mrelu(\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mfc1(x))\n", + "\u001b[1;32md:\\Users\\lucil\\Documents\\S9\\Apprentissage profond\\mod_4_6-td2\\TD2 Deep Learning.ipynb Cell 15\u001b[0m line \u001b[0;36m1\n\u001b[0;32m <a href='vscode-notebook-cell:/d%3A/Users/lucil/Documents/S9/Apprentissage%20profond/mod_4_6-td2/TD2%20Deep%20Learning.ipynb#X20sZmlsZQ%3D%3D?line=14'>15</a>\u001b[0m \u001b[39m# Train the model\u001b[39;00m\n\u001b[0;32m <a href='vscode-notebook-cell:/d%3A/Users/lucil/Documents/S9/Apprentissage%20profond/mod_4_6-td2/TD2%20Deep%20Learning.ipynb#X20sZmlsZQ%3D%3D?line=15'>16</a>\u001b[0m model\u001b[39m.\u001b[39mtrain()\n\u001b[1;32m---> <a href='vscode-notebook-cell:/d%3A/Users/lucil/Documents/S9/Apprentissage%20profond/mod_4_6-td2/TD2%20Deep%20Learning.ipynb#X20sZmlsZQ%3D%3D?line=16'>17</a>\u001b[0m \u001b[39mfor\u001b[39;00m data, target \u001b[39min\u001b[39;00m train_loader:\n\u001b[0;32m <a href='vscode-notebook-cell:/d%3A/Users/lucil/Documents/S9/Apprentissage%20profond/mod_4_6-td2/TD2%20Deep%20Learning.ipynb#X20sZmlsZQ%3D%3D?line=17'>18</a>\u001b[0m \u001b[39m# Move tensors to GPU if CUDA is available\u001b[39;00m\n\u001b[0;32m <a href='vscode-notebook-cell:/d%3A/Users/lucil/Documents/S9/Apprentissage%20profond/mod_4_6-td2/TD2%20Deep%20Learning.ipynb#X20sZmlsZQ%3D%3D?line=18'>19</a>\u001b[0m \u001b[39mif\u001b[39;00m train_on_gpu:\n\u001b[0;32m <a href='vscode-notebook-cell:/d%3A/Users/lucil/Documents/S9/Apprentissage%20profond/mod_4_6-td2/TD2%20Deep%20Learning.ipynb#X20sZmlsZQ%3D%3D?line=19'>20</a>\u001b[0m data, target \u001b[39m=\u001b[39m data\u001b[39m.\u001b[39mcuda(), target\u001b[39m.\u001b[39mcuda()\n", + "File \u001b[1;32mc:\\Users\\lucil\\anaconda3\\Lib\\site-packages\\torch\\utils\\data\\dataloader.py:630\u001b[0m, in \u001b[0;36m_BaseDataLoaderIter.__next__\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 627\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_sampler_iter \u001b[39mis\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[0;32m 628\u001b[0m \u001b[39m# TODO(https://github.com/pytorch/pytorch/issues/76750)\u001b[39;00m\n\u001b[0;32m 629\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_reset() \u001b[39m# type: ignore[call-arg]\u001b[39;00m\n\u001b[1;32m--> 630\u001b[0m data \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_next_data()\n\u001b[0;32m 631\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_num_yielded \u001b[39m+\u001b[39m\u001b[39m=\u001b[39m \u001b[39m1\u001b[39m\n\u001b[0;32m 632\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_dataset_kind \u001b[39m==\u001b[39m _DatasetKind\u001b[39m.\u001b[39mIterable \u001b[39mand\u001b[39;00m \\\n\u001b[0;32m 633\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_IterableDataset_len_called \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m \u001b[39mand\u001b[39;00m \\\n\u001b[0;32m 634\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_num_yielded \u001b[39m>\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_IterableDataset_len_called:\n", + "File \u001b[1;32mc:\\Users\\lucil\\anaconda3\\Lib\\site-packages\\torch\\utils\\data\\dataloader.py:674\u001b[0m, in \u001b[0;36m_SingleProcessDataLoaderIter._next_data\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 672\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m_next_data\u001b[39m(\u001b[39mself\u001b[39m):\n\u001b[0;32m 673\u001b[0m index \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_next_index() \u001b[39m# may raise StopIteration\u001b[39;00m\n\u001b[1;32m--> 674\u001b[0m data \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_dataset_fetcher\u001b[39m.\u001b[39mfetch(index) \u001b[39m# may raise StopIteration\u001b[39;00m\n\u001b[0;32m 675\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_pin_memory:\n\u001b[0;32m 676\u001b[0m data \u001b[39m=\u001b[39m _utils\u001b[39m.\u001b[39mpin_memory\u001b[39m.\u001b[39mpin_memory(data, \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_pin_memory_device)\n", + "File \u001b[1;32mc:\\Users\\lucil\\anaconda3\\Lib\\site-packages\\torch\\utils\\data\\_utils\\fetch.py:51\u001b[0m, in \u001b[0;36m_MapDatasetFetcher.fetch\u001b[1;34m(self, possibly_batched_index)\u001b[0m\n\u001b[0;32m 49\u001b[0m data \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mdataset\u001b[39m.\u001b[39m__getitems__(possibly_batched_index)\n\u001b[0;32m 50\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m---> 51\u001b[0m data \u001b[39m=\u001b[39m [\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mdataset[idx] \u001b[39mfor\u001b[39;00m idx \u001b[39min\u001b[39;00m possibly_batched_index]\n\u001b[0;32m 52\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m 53\u001b[0m data \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mdataset[possibly_batched_index]\n", + "File \u001b[1;32mc:\\Users\\lucil\\anaconda3\\Lib\\site-packages\\torch\\utils\\data\\_utils\\fetch.py:51\u001b[0m, in \u001b[0;36m<listcomp>\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m 49\u001b[0m data \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mdataset\u001b[39m.\u001b[39m__getitems__(possibly_batched_index)\n\u001b[0;32m 50\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m---> 51\u001b[0m data \u001b[39m=\u001b[39m [\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mdataset[idx] \u001b[39mfor\u001b[39;00m idx \u001b[39min\u001b[39;00m possibly_batched_index]\n\u001b[0;32m 52\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m 53\u001b[0m data \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mdataset[possibly_batched_index]\n", + "File \u001b[1;32mc:\\Users\\lucil\\anaconda3\\Lib\\site-packages\\torchvision\\datasets\\cifar.py:118\u001b[0m, in \u001b[0;36mCIFAR10.__getitem__\u001b[1;34m(self, index)\u001b[0m\n\u001b[0;32m 115\u001b[0m img \u001b[39m=\u001b[39m Image\u001b[39m.\u001b[39mfromarray(img)\n\u001b[0;32m 117\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mtransform \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[1;32m--> 118\u001b[0m img \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mtransform(img)\n\u001b[0;32m 120\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mtarget_transform \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[0;32m 121\u001b[0m target \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mtarget_transform(target)\n", + "File \u001b[1;32mc:\\Users\\lucil\\anaconda3\\Lib\\site-packages\\torchvision\\transforms\\transforms.py:95\u001b[0m, in \u001b[0;36mCompose.__call__\u001b[1;34m(self, img)\u001b[0m\n\u001b[0;32m 93\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m__call__\u001b[39m(\u001b[39mself\u001b[39m, img):\n\u001b[0;32m 94\u001b[0m \u001b[39mfor\u001b[39;00m t \u001b[39min\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mtransforms:\n\u001b[1;32m---> 95\u001b[0m img \u001b[39m=\u001b[39m t(img)\n\u001b[0;32m 96\u001b[0m \u001b[39mreturn\u001b[39;00m img\n", "File \u001b[1;32mc:\\Users\\lucil\\anaconda3\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1518\u001b[0m, in \u001b[0;36mModule._wrapped_call_impl\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1516\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_compiled_call_impl(\u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs) \u001b[39m# type: ignore[misc]\u001b[39;00m\n\u001b[0;32m 1517\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m-> 1518\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_call_impl(\u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs)\n", "File \u001b[1;32mc:\\Users\\lucil\\anaconda3\\Lib\\site-packages\\torch\\nn\\modules\\module.py:1527\u001b[0m, in \u001b[0;36mModule._call_impl\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1522\u001b[0m \u001b[39m# If we don't have any hooks, we want to skip the rest of the logic in\u001b[39;00m\n\u001b[0;32m 1523\u001b[0m \u001b[39m# this function, and just call forward.\u001b[39;00m\n\u001b[0;32m 1524\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m (\u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_backward_hooks \u001b[39mor\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_backward_pre_hooks \u001b[39mor\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_forward_hooks \u001b[39mor\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_forward_pre_hooks\n\u001b[0;32m 1525\u001b[0m \u001b[39mor\u001b[39;00m _global_backward_pre_hooks \u001b[39mor\u001b[39;00m _global_backward_hooks\n\u001b[0;32m 1526\u001b[0m \u001b[39mor\u001b[39;00m _global_forward_hooks \u001b[39mor\u001b[39;00m _global_forward_pre_hooks):\n\u001b[1;32m-> 1527\u001b[0m \u001b[39mreturn\u001b[39;00m forward_call(\u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs)\n\u001b[0;32m 1529\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m 1530\u001b[0m result \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m\n", - "File \u001b[1;32mc:\\Users\\lucil\\anaconda3\\Lib\\site-packages\\torch\\nn\\modules\\pooling.py:166\u001b[0m, in \u001b[0;36mMaxPool2d.forward\u001b[1;34m(self, input)\u001b[0m\n\u001b[0;32m 165\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mforward\u001b[39m(\u001b[39mself\u001b[39m, \u001b[39minput\u001b[39m: Tensor):\n\u001b[1;32m--> 166\u001b[0m \u001b[39mreturn\u001b[39;00m F\u001b[39m.\u001b[39mmax_pool2d(\u001b[39minput\u001b[39m, \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mkernel_size, \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mstride,\n\u001b[0;32m 167\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mpadding, \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mdilation, ceil_mode\u001b[39m=\u001b[39m\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mceil_mode,\n\u001b[0;32m 168\u001b[0m return_indices\u001b[39m=\u001b[39m\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mreturn_indices)\n", - "File \u001b[1;32mc:\\Users\\lucil\\anaconda3\\Lib\\site-packages\\torch\\_jit_internal.py:488\u001b[0m, in \u001b[0;36mboolean_dispatch.<locals>.fn\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 486\u001b[0m \u001b[39mreturn\u001b[39;00m if_true(\u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs)\n\u001b[0;32m 487\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m--> 488\u001b[0m \u001b[39mreturn\u001b[39;00m if_false(\u001b[39m*\u001b[39margs, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs)\n", - "File \u001b[1;32mc:\\Users\\lucil\\anaconda3\\Lib\\site-packages\\torch\\nn\\functional.py:791\u001b[0m, in \u001b[0;36m_max_pool2d\u001b[1;34m(input, kernel_size, stride, padding, dilation, ceil_mode, return_indices)\u001b[0m\n\u001b[0;32m 789\u001b[0m \u001b[39mif\u001b[39;00m stride \u001b[39mis\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[0;32m 790\u001b[0m stride \u001b[39m=\u001b[39m torch\u001b[39m.\u001b[39mjit\u001b[39m.\u001b[39mannotate(List[\u001b[39mint\u001b[39m], [])\n\u001b[1;32m--> 791\u001b[0m \u001b[39mreturn\u001b[39;00m torch\u001b[39m.\u001b[39mmax_pool2d(\u001b[39minput\u001b[39m, kernel_size, stride, padding, dilation, ceil_mode)\n", + "File \u001b[1;32mc:\\Users\\lucil\\anaconda3\\Lib\\site-packages\\torchvision\\transforms\\transforms.py:277\u001b[0m, in \u001b[0;36mNormalize.forward\u001b[1;34m(self, tensor)\u001b[0m\n\u001b[0;32m 269\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mforward\u001b[39m(\u001b[39mself\u001b[39m, tensor: Tensor) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m Tensor:\n\u001b[0;32m 270\u001b[0m \u001b[39m \u001b[39m\u001b[39m\"\"\"\u001b[39;00m\n\u001b[0;32m 271\u001b[0m \u001b[39m Args:\u001b[39;00m\n\u001b[0;32m 272\u001b[0m \u001b[39m tensor (Tensor): Tensor image to be normalized.\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 275\u001b[0m \u001b[39m Tensor: Normalized Tensor image.\u001b[39;00m\n\u001b[0;32m 276\u001b[0m \u001b[39m \"\"\"\u001b[39;00m\n\u001b[1;32m--> 277\u001b[0m \u001b[39mreturn\u001b[39;00m F\u001b[39m.\u001b[39mnormalize(tensor, \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mmean, \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mstd, \u001b[39mself\u001b[39m\u001b[39m.\u001b[39minplace)\n", + "File \u001b[1;32mc:\\Users\\lucil\\anaconda3\\Lib\\site-packages\\torchvision\\transforms\\functional.py:363\u001b[0m, in \u001b[0;36mnormalize\u001b[1;34m(tensor, mean, std, inplace)\u001b[0m\n\u001b[0;32m 360\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39misinstance\u001b[39m(tensor, torch\u001b[39m.\u001b[39mTensor):\n\u001b[0;32m 361\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mTypeError\u001b[39;00m(\u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mimg should be Tensor Image. Got \u001b[39m\u001b[39m{\u001b[39;00m\u001b[39mtype\u001b[39m(tensor)\u001b[39m}\u001b[39;00m\u001b[39m\"\u001b[39m)\n\u001b[1;32m--> 363\u001b[0m \u001b[39mreturn\u001b[39;00m F_t\u001b[39m.\u001b[39mnormalize(tensor, mean\u001b[39m=\u001b[39mmean, std\u001b[39m=\u001b[39mstd, inplace\u001b[39m=\u001b[39minplace)\n", + "File \u001b[1;32mc:\\Users\\lucil\\anaconda3\\Lib\\site-packages\\torchvision\\transforms\\_functional_tensor.py:917\u001b[0m, in \u001b[0;36mnormalize\u001b[1;34m(tensor, mean, std, inplace)\u001b[0m\n\u001b[0;32m 912\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mValueError\u001b[39;00m(\n\u001b[0;32m 913\u001b[0m \u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mExpected tensor to be a tensor image of size (..., C, H, W). Got tensor.size() = \u001b[39m\u001b[39m{\u001b[39;00mtensor\u001b[39m.\u001b[39msize()\u001b[39m}\u001b[39;00m\u001b[39m\"\u001b[39m\n\u001b[0;32m 914\u001b[0m )\n\u001b[0;32m 916\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m inplace:\n\u001b[1;32m--> 917\u001b[0m tensor \u001b[39m=\u001b[39m tensor\u001b[39m.\u001b[39mclone()\n\u001b[0;32m 919\u001b[0m dtype \u001b[39m=\u001b[39m tensor\u001b[39m.\u001b[39mdtype\n\u001b[0;32m 920\u001b[0m mean \u001b[39m=\u001b[39m torch\u001b[39m.\u001b[39mas_tensor(mean, dtype\u001b[39m=\u001b[39mdtype, device\u001b[39m=\u001b[39mtensor\u001b[39m.\u001b[39mdevice)\n", "\u001b[1;31mKeyboardInterrupt\u001b[0m: " ] } @@ -493,19 +538,19 @@ "id": "13e1df74", "metadata": {}, "source": [ - "Overfit occurs so we do an early stopping at epoch 13 (should have been done at epoch 12).\n", + "Overfit occurs so we do an early stopping at epoch 12.\n", "Now we can plot the performance :" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 54, "id": "d39df818", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] @@ -518,7 +563,7 @@ "import matplotlib.pyplot as plt\n", "\n", "n_epochs_overfit = 13 #Otherwise len(train_lost_list) < n_epochs\n", - "plt.plot(range(n_epochs_overfit), train_loss_list[:-1])\n", + "plt.plot(range(n_epochs_overfit), train_loss_list)\n", "plt.xlabel(\"Epoch\")\n", "plt.ylabel(\"Loss\")\n", "plt.title(\"Performance of Model 0\")\n", @@ -535,7 +580,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 57, "id": "e93efdfc", "metadata": {}, "outputs": [ @@ -543,20 +588,20 @@ "name": "stdout", "output_type": "stream", "text": [ - "Test Loss: 22.185146\n", + "Test Loss: 22.300072\n", "\n", - "Test Accuracy of airplane: 62% (628/1000)\n", - "Test Accuracy of automobile: 74% (749/1000)\n", - "Test Accuracy of bird: 42% (429/1000)\n", - "Test Accuracy of cat: 38% (385/1000)\n", - "Test Accuracy of deer: 48% (482/1000)\n", - "Test Accuracy of dog: 48% (480/1000)\n", - "Test Accuracy of frog: 73% (734/1000)\n", - "Test Accuracy of horse: 71% (712/1000)\n", - "Test Accuracy of ship: 78% (781/1000)\n", - "Test Accuracy of truck: 71% (718/1000)\n", + "Test Accuracy of airplane: 65% (655/1000)\n", + "Test Accuracy of automobile: 70% (704/1000)\n", + "Test Accuracy of bird: 62% (625/1000)\n", + "Test Accuracy of cat: 45% (455/1000)\n", + "Test Accuracy of deer: 43% (431/1000)\n", + "Test Accuracy of dog: 36% (361/1000)\n", + "Test Accuracy of frog: 68% (683/1000)\n", + "Test Accuracy of horse: 69% (694/1000)\n", + "Test Accuracy of ship: 80% (801/1000)\n", + "Test Accuracy of truck: 67% (676/1000)\n", "\n", - "Test Accuracy (Overall): 60% (6098/10000)\n" + "Test Accuracy (Overall): 60% (6085/10000)\n" ] } ], @@ -649,7 +694,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 58, "metadata": {}, "outputs": [ { @@ -738,44 +783,45 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 59, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Epoch: 0 \tTraining Loss: 45.999779 \tValidation Loss: 45.708036\n", - "Validation loss decreased (inf --> 45.708036). Saving model_1 ...\n", - "Epoch: 1 \tTraining Loss: 42.228754 \tValidation Loss: 38.043084\n", - "Validation loss decreased (45.708036 --> 38.043084). Saving model_1 ...\n", - "Epoch: 2 \tTraining Loss: 36.859957 \tValidation Loss: 32.964439\n", - "Validation loss decreased (38.043084 --> 32.964439). Saving model_1 ...\n", - "Epoch: 3 \tTraining Loss: 33.854479 \tValidation Loss: 31.206484\n", - "Validation loss decreased (32.964439 --> 31.206484). Saving model_1 ...\n", - "Epoch: 4 \tTraining Loss: 31.841331 \tValidation Loss: 29.466390\n", - "Validation loss decreased (31.206484 --> 29.466390). Saving model_1 ...\n", - "Epoch: 5 \tTraining Loss: 30.123153 \tValidation Loss: 27.320879\n", - "Validation loss decreased (29.466390 --> 27.320879). Saving model_1 ...\n", - "Epoch: 6 \tTraining Loss: 28.501253 \tValidation Loss: 25.977184\n", - "Validation loss decreased (27.320879 --> 25.977184). Saving model_1 ...\n", - "Epoch: 7 \tTraining Loss: 26.864250 \tValidation Loss: 23.841341\n", - "Validation loss decreased (25.977184 --> 23.841341). Saving model_1 ...\n", - "Epoch: 8 \tTraining Loss: 25.504650 \tValidation Loss: 22.691753\n", - "Validation loss decreased (23.841341 --> 22.691753). Saving model_1 ...\n", - "Epoch: 9 \tTraining Loss: 24.086911 \tValidation Loss: 21.352982\n", - "Validation loss decreased (22.691753 --> 21.352982). Saving model_1 ...\n", - "Epoch: 10 \tTraining Loss: 22.880436 \tValidation Loss: 20.317365\n", - "Validation loss decreased (21.352982 --> 20.317365). Saving model_1 ...\n", - "Epoch: 11 \tTraining Loss: 21.789587 \tValidation Loss: 19.749537\n", - "Validation loss decreased (20.317365 --> 19.749537). Saving model_1 ...\n", - "Epoch: 12 \tTraining Loss: 20.766126 \tValidation Loss: 19.134493\n", - "Validation loss decreased (19.749537 --> 19.134493). Saving model_1 ...\n", - "Epoch: 13 \tTraining Loss: 19.737510 \tValidation Loss: 18.760638\n", - "Validation loss decreased (19.134493 --> 18.760638). Saving model_1 ...\n", - "Epoch: 14 \tTraining Loss: 19.023474 \tValidation Loss: 17.555831\n", - "Validation loss decreased (18.760638 --> 17.555831). Saving model_1 ...\n", - "Epoch: 15 \tTraining Loss: 18.147850 \tValidation Loss: 17.598172\n" + "Epoch: 0 \tTraining Loss: 45.053333 \tValidation Loss: 42.578713\n", + "Validation loss decreased (inf --> 42.578713). Saving model_1 ...\n", + "Epoch: 1 \tTraining Loss: 40.612020 \tValidation Loss: 36.590100\n", + "Validation loss decreased (42.578713 --> 36.590100). Saving model_1 ...\n", + "Epoch: 2 \tTraining Loss: 35.462290 \tValidation Loss: 32.586230\n", + "Validation loss decreased (36.590100 --> 32.586230). Saving model_1 ...\n", + "Epoch: 3 \tTraining Loss: 32.806390 \tValidation Loss: 30.071740\n", + "Validation loss decreased (32.586230 --> 30.071740). Saving model_1 ...\n", + "Epoch: 4 \tTraining Loss: 31.012135 \tValidation Loss: 28.401430\n", + "Validation loss decreased (30.071740 --> 28.401430). Saving model_1 ...\n", + "Epoch: 5 \tTraining Loss: 29.096134 \tValidation Loss: 27.068271\n", + "Validation loss decreased (28.401430 --> 27.068271). Saving model_1 ...\n", + "Epoch: 6 \tTraining Loss: 27.731118 \tValidation Loss: 25.296242\n", + "Validation loss decreased (27.068271 --> 25.296242). Saving model_1 ...\n", + "Epoch: 7 \tTraining Loss: 26.363600 \tValidation Loss: 24.148631\n", + "Validation loss decreased (25.296242 --> 24.148631). Saving model_1 ...\n", + "Epoch: 8 \tTraining Loss: 25.025681 \tValidation Loss: 24.355250\n", + "Epoch: 9 \tTraining Loss: 23.833313 \tValidation Loss: 21.843592\n", + "Validation loss decreased (24.148631 --> 21.843592). Saving model_1 ...\n", + "Epoch: 10 \tTraining Loss: 22.728508 \tValidation Loss: 20.837556\n", + "Validation loss decreased (21.843592 --> 20.837556). Saving model_1 ...\n", + "Epoch: 11 \tTraining Loss: 21.661910 \tValidation Loss: 20.103897\n", + "Validation loss decreased (20.837556 --> 20.103897). Saving model_1 ...\n", + "Epoch: 12 \tTraining Loss: 20.645930 \tValidation Loss: 19.341293\n", + "Validation loss decreased (20.103897 --> 19.341293). Saving model_1 ...\n", + "Epoch: 13 \tTraining Loss: 19.872841 \tValidation Loss: 18.624166\n", + "Validation loss decreased (19.341293 --> 18.624166). Saving model_1 ...\n", + "Epoch: 14 \tTraining Loss: 19.015129 \tValidation Loss: 18.244864\n", + "Validation loss decreased (18.624166 --> 18.244864). Saving model_1 ...\n", + "Epoch: 15 \tTraining Loss: 18.200573 \tValidation Loss: 17.432740\n", + "Validation loss decreased (18.244864 --> 17.432740). Saving model_1 ...\n", + "Epoch: 16 \tTraining Loss: 17.346005 \tValidation Loss: 17.750358\n" ] }, { @@ -785,15 +831,9 @@ "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[1;32md:\\Users\\lucil\\Documents\\S9\\Apprentissage profond\\mod_4_6-td2\\TD2 Deep Learning.ipynb Cell 24\u001b[0m line \u001b[0;36m1\n\u001b[0;32m <a href='vscode-notebook-cell:/d%3A/Users/lucil/Documents/S9/Apprentissage%20profond/mod_4_6-td2/TD2%20Deep%20Learning.ipynb#X32sZmlsZQ%3D%3D?line=14'>15</a>\u001b[0m \u001b[39m# Train the model\u001b[39;00m\n\u001b[0;32m <a href='vscode-notebook-cell:/d%3A/Users/lucil/Documents/S9/Apprentissage%20profond/mod_4_6-td2/TD2%20Deep%20Learning.ipynb#X32sZmlsZQ%3D%3D?line=15'>16</a>\u001b[0m model_1\u001b[39m.\u001b[39mtrain()\n\u001b[1;32m---> <a href='vscode-notebook-cell:/d%3A/Users/lucil/Documents/S9/Apprentissage%20profond/mod_4_6-td2/TD2%20Deep%20Learning.ipynb#X32sZmlsZQ%3D%3D?line=16'>17</a>\u001b[0m \u001b[39mfor\u001b[39;00m data, target \u001b[39min\u001b[39;00m train_loader:\n\u001b[0;32m <a href='vscode-notebook-cell:/d%3A/Users/lucil/Documents/S9/Apprentissage%20profond/mod_4_6-td2/TD2%20Deep%20Learning.ipynb#X32sZmlsZQ%3D%3D?line=17'>18</a>\u001b[0m \u001b[39m# Move tensors to GPU if CUDA is available\u001b[39;00m\n\u001b[0;32m <a href='vscode-notebook-cell:/d%3A/Users/lucil/Documents/S9/Apprentissage%20profond/mod_4_6-td2/TD2%20Deep%20Learning.ipynb#X32sZmlsZQ%3D%3D?line=18'>19</a>\u001b[0m \u001b[39mif\u001b[39;00m train_on_gpu:\n\u001b[0;32m <a href='vscode-notebook-cell:/d%3A/Users/lucil/Documents/S9/Apprentissage%20profond/mod_4_6-td2/TD2%20Deep%20Learning.ipynb#X32sZmlsZQ%3D%3D?line=19'>20</a>\u001b[0m data, target \u001b[39m=\u001b[39m data\u001b[39m.\u001b[39mcuda(), target\u001b[39m.\u001b[39mcuda()\n", - "File \u001b[1;32mc:\\Users\\lucil\\anaconda3\\Lib\\site-packages\\torch\\utils\\data\\dataloader.py:630\u001b[0m, in \u001b[0;36m_BaseDataLoaderIter.__next__\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 627\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_sampler_iter \u001b[39mis\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[0;32m 628\u001b[0m \u001b[39m# TODO(https://github.com/pytorch/pytorch/issues/76750)\u001b[39;00m\n\u001b[0;32m 629\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_reset() \u001b[39m# type: ignore[call-arg]\u001b[39;00m\n\u001b[1;32m--> 630\u001b[0m data \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_next_data()\n\u001b[0;32m 631\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_num_yielded \u001b[39m+\u001b[39m\u001b[39m=\u001b[39m \u001b[39m1\u001b[39m\n\u001b[0;32m 632\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_dataset_kind \u001b[39m==\u001b[39m _DatasetKind\u001b[39m.\u001b[39mIterable \u001b[39mand\u001b[39;00m \\\n\u001b[0;32m 633\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_IterableDataset_len_called \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m \u001b[39mand\u001b[39;00m \\\n\u001b[0;32m 634\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_num_yielded \u001b[39m>\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_IterableDataset_len_called:\n", - "File \u001b[1;32mc:\\Users\\lucil\\anaconda3\\Lib\\site-packages\\torch\\utils\\data\\dataloader.py:674\u001b[0m, in \u001b[0;36m_SingleProcessDataLoaderIter._next_data\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 672\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m_next_data\u001b[39m(\u001b[39mself\u001b[39m):\n\u001b[0;32m 673\u001b[0m index \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_next_index() \u001b[39m# may raise StopIteration\u001b[39;00m\n\u001b[1;32m--> 674\u001b[0m data \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_dataset_fetcher\u001b[39m.\u001b[39mfetch(index) \u001b[39m# may raise StopIteration\u001b[39;00m\n\u001b[0;32m 675\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_pin_memory:\n\u001b[0;32m 676\u001b[0m data \u001b[39m=\u001b[39m _utils\u001b[39m.\u001b[39mpin_memory\u001b[39m.\u001b[39mpin_memory(data, \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_pin_memory_device)\n", - "File \u001b[1;32mc:\\Users\\lucil\\anaconda3\\Lib\\site-packages\\torch\\utils\\data\\_utils\\fetch.py:51\u001b[0m, in \u001b[0;36m_MapDatasetFetcher.fetch\u001b[1;34m(self, possibly_batched_index)\u001b[0m\n\u001b[0;32m 49\u001b[0m data \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mdataset\u001b[39m.\u001b[39m__getitems__(possibly_batched_index)\n\u001b[0;32m 50\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m---> 51\u001b[0m data \u001b[39m=\u001b[39m [\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mdataset[idx] \u001b[39mfor\u001b[39;00m idx \u001b[39min\u001b[39;00m possibly_batched_index]\n\u001b[0;32m 52\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m 53\u001b[0m data \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mdataset[possibly_batched_index]\n", - "File \u001b[1;32mc:\\Users\\lucil\\anaconda3\\Lib\\site-packages\\torch\\utils\\data\\_utils\\fetch.py:51\u001b[0m, in \u001b[0;36m<listcomp>\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m 49\u001b[0m data \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mdataset\u001b[39m.\u001b[39m__getitems__(possibly_batched_index)\n\u001b[0;32m 50\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m---> 51\u001b[0m data \u001b[39m=\u001b[39m [\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mdataset[idx] \u001b[39mfor\u001b[39;00m idx \u001b[39min\u001b[39;00m possibly_batched_index]\n\u001b[0;32m 52\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m 53\u001b[0m data \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mdataset[possibly_batched_index]\n", - "File \u001b[1;32mc:\\Users\\lucil\\anaconda3\\Lib\\site-packages\\torchvision\\datasets\\cifar.py:118\u001b[0m, in \u001b[0;36mCIFAR10.__getitem__\u001b[1;34m(self, index)\u001b[0m\n\u001b[0;32m 115\u001b[0m img \u001b[39m=\u001b[39m Image\u001b[39m.\u001b[39mfromarray(img)\n\u001b[0;32m 117\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mtransform \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[1;32m--> 118\u001b[0m img \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mtransform(img)\n\u001b[0;32m 120\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mtarget_transform \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[0;32m 121\u001b[0m target \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mtarget_transform(target)\n", - "File \u001b[1;32mc:\\Users\\lucil\\anaconda3\\Lib\\site-packages\\torchvision\\transforms\\transforms.py:95\u001b[0m, in \u001b[0;36mCompose.__call__\u001b[1;34m(self, img)\u001b[0m\n\u001b[0;32m 93\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m__call__\u001b[39m(\u001b[39mself\u001b[39m, img):\n\u001b[0;32m 94\u001b[0m \u001b[39mfor\u001b[39;00m t \u001b[39min\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mtransforms:\n\u001b[1;32m---> 95\u001b[0m img \u001b[39m=\u001b[39m t(img)\n\u001b[0;32m 96\u001b[0m \u001b[39mreturn\u001b[39;00m img\n", - "File \u001b[1;32mc:\\Users\\lucil\\anaconda3\\Lib\\site-packages\\torchvision\\transforms\\transforms.py:137\u001b[0m, in \u001b[0;36mToTensor.__call__\u001b[1;34m(self, pic)\u001b[0m\n\u001b[0;32m 129\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m__call__\u001b[39m(\u001b[39mself\u001b[39m, pic):\n\u001b[0;32m 130\u001b[0m \u001b[39m \u001b[39m\u001b[39m\"\"\"\u001b[39;00m\n\u001b[0;32m 131\u001b[0m \u001b[39m Args:\u001b[39;00m\n\u001b[0;32m 132\u001b[0m \u001b[39m pic (PIL Image or numpy.ndarray): Image to be converted to tensor.\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 135\u001b[0m \u001b[39m Tensor: Converted image.\u001b[39;00m\n\u001b[0;32m 136\u001b[0m \u001b[39m \"\"\"\u001b[39;00m\n\u001b[1;32m--> 137\u001b[0m \u001b[39mreturn\u001b[39;00m F\u001b[39m.\u001b[39mto_tensor(pic)\n", - "File \u001b[1;32mc:\\Users\\lucil\\anaconda3\\Lib\\site-packages\\torchvision\\transforms\\functional.py:172\u001b[0m, in \u001b[0;36mto_tensor\u001b[1;34m(pic)\u001b[0m\n\u001b[0;32m 170\u001b[0m img \u001b[39m=\u001b[39m img\u001b[39m.\u001b[39mview(pic\u001b[39m.\u001b[39msize[\u001b[39m1\u001b[39m], pic\u001b[39m.\u001b[39msize[\u001b[39m0\u001b[39m], F_pil\u001b[39m.\u001b[39mget_image_num_channels(pic))\n\u001b[0;32m 171\u001b[0m \u001b[39m# put it from HWC to CHW format\u001b[39;00m\n\u001b[1;32m--> 172\u001b[0m img \u001b[39m=\u001b[39m img\u001b[39m.\u001b[39mpermute((\u001b[39m2\u001b[39m, \u001b[39m0\u001b[39m, \u001b[39m1\u001b[39m))\u001b[39m.\u001b[39mcontiguous()\n\u001b[0;32m 173\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39misinstance\u001b[39m(img, torch\u001b[39m.\u001b[39mByteTensor):\n\u001b[0;32m 174\u001b[0m \u001b[39mreturn\u001b[39;00m img\u001b[39m.\u001b[39mto(dtype\u001b[39m=\u001b[39mdefault_float_dtype)\u001b[39m.\u001b[39mdiv(\u001b[39m255\u001b[39m)\n", + "\u001b[1;32md:\\Users\\lucil\\Documents\\S9\\Apprentissage profond\\mod_4_6-td2\\TD2 Deep Learning.ipynb Cell 24\u001b[0m line \u001b[0;36m2\n\u001b[0;32m <a href='vscode-notebook-cell:/d%3A/Users/lucil/Documents/S9/Apprentissage%20profond/mod_4_6-td2/TD2%20Deep%20Learning.ipynb#X32sZmlsZQ%3D%3D?line=25'>26</a>\u001b[0m loss \u001b[39m=\u001b[39m criterion(output, target)\n\u001b[0;32m <a href='vscode-notebook-cell:/d%3A/Users/lucil/Documents/S9/Apprentissage%20profond/mod_4_6-td2/TD2%20Deep%20Learning.ipynb#X32sZmlsZQ%3D%3D?line=26'>27</a>\u001b[0m \u001b[39m# Backward pass: compute gradient of the loss with respect to model parameters\u001b[39;00m\n\u001b[1;32m---> <a href='vscode-notebook-cell:/d%3A/Users/lucil/Documents/S9/Apprentissage%20profond/mod_4_6-td2/TD2%20Deep%20Learning.ipynb#X32sZmlsZQ%3D%3D?line=27'>28</a>\u001b[0m loss\u001b[39m.\u001b[39mbackward()\n\u001b[0;32m <a href='vscode-notebook-cell:/d%3A/Users/lucil/Documents/S9/Apprentissage%20profond/mod_4_6-td2/TD2%20Deep%20Learning.ipynb#X32sZmlsZQ%3D%3D?line=28'>29</a>\u001b[0m \u001b[39m# Perform a single optimization step (parameter update)\u001b[39;00m\n\u001b[0;32m <a href='vscode-notebook-cell:/d%3A/Users/lucil/Documents/S9/Apprentissage%20profond/mod_4_6-td2/TD2%20Deep%20Learning.ipynb#X32sZmlsZQ%3D%3D?line=29'>30</a>\u001b[0m optimizer\u001b[39m.\u001b[39mstep()\n", + "File \u001b[1;32mc:\\Users\\lucil\\anaconda3\\Lib\\site-packages\\torch\\_tensor.py:492\u001b[0m, in \u001b[0;36mTensor.backward\u001b[1;34m(self, gradient, retain_graph, create_graph, inputs)\u001b[0m\n\u001b[0;32m 482\u001b[0m \u001b[39mif\u001b[39;00m has_torch_function_unary(\u001b[39mself\u001b[39m):\n\u001b[0;32m 483\u001b[0m \u001b[39mreturn\u001b[39;00m handle_torch_function(\n\u001b[0;32m 484\u001b[0m Tensor\u001b[39m.\u001b[39mbackward,\n\u001b[0;32m 485\u001b[0m (\u001b[39mself\u001b[39m,),\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 490\u001b[0m inputs\u001b[39m=\u001b[39minputs,\n\u001b[0;32m 491\u001b[0m )\n\u001b[1;32m--> 492\u001b[0m torch\u001b[39m.\u001b[39mautograd\u001b[39m.\u001b[39mbackward(\n\u001b[0;32m 493\u001b[0m \u001b[39mself\u001b[39m, gradient, retain_graph, create_graph, inputs\u001b[39m=\u001b[39minputs\n\u001b[0;32m 494\u001b[0m )\n", + "File \u001b[1;32mc:\\Users\\lucil\\anaconda3\\Lib\\site-packages\\torch\\autograd\\__init__.py:251\u001b[0m, in \u001b[0;36mbackward\u001b[1;34m(tensors, grad_tensors, retain_graph, create_graph, grad_variables, inputs)\u001b[0m\n\u001b[0;32m 246\u001b[0m retain_graph \u001b[39m=\u001b[39m create_graph\n\u001b[0;32m 248\u001b[0m \u001b[39m# The reason we repeat the same comment below is that\u001b[39;00m\n\u001b[0;32m 249\u001b[0m \u001b[39m# some Python versions print out the first line of a multi-line function\u001b[39;00m\n\u001b[0;32m 250\u001b[0m \u001b[39m# calls in the traceback and some print out the last line\u001b[39;00m\n\u001b[1;32m--> 251\u001b[0m Variable\u001b[39m.\u001b[39m_execution_engine\u001b[39m.\u001b[39mrun_backward( \u001b[39m# Calls into the C++ engine to run the backward pass\u001b[39;00m\n\u001b[0;32m 252\u001b[0m tensors,\n\u001b[0;32m 253\u001b[0m grad_tensors_,\n\u001b[0;32m 254\u001b[0m retain_graph,\n\u001b[0;32m 255\u001b[0m create_graph,\n\u001b[0;32m 256\u001b[0m inputs,\n\u001b[0;32m 257\u001b[0m allow_unreachable\u001b[39m=\u001b[39m\u001b[39mTrue\u001b[39;00m,\n\u001b[0;32m 258\u001b[0m accumulate_grad\u001b[39m=\u001b[39m\u001b[39mTrue\u001b[39;00m,\n\u001b[0;32m 259\u001b[0m )\n", "\u001b[1;31mKeyboardInterrupt\u001b[0m: " ] } @@ -877,12 +917,12 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 63, "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] @@ -893,10 +933,14 @@ ], "source": [ "import matplotlib.pyplot as plt\n", + "import numpy as np\n", "\n", "n_epochs_overfit = 13\n", - "plt.plot(range(n_epochs_overfit), train_loss_list[:-1], label = \"Model 0\")\n", - "plt.plot(range(n_epochs_overfit), train_loss_list_1[:-3], color = \"green\", label = \"Model 1\")\n", + "n_epochs_overfit1 = 17\n", + "train_loss_list_interpolated = np.interp(range(n_epochs_overfit1), range(n_epochs_overfit), train_loss_list)\n", + "\n", + "plt.plot(range(n_epochs_overfit1)[:n_epochs_overfit], train_loss_list_interpolated[:n_epochs_overfit], label = \"Model 0\")\n", + "plt.plot(range(n_epochs_overfit1), train_loss_list_1, color = \"green\", label = \"Model 1\")\n", "plt.xlabel(\"Epoch\")\n", "plt.ylabel(\"Loss\")\n", "plt.title(\"Comparison of Performance of Model 0 and Model 1\")\n", @@ -908,7 +952,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "For model 1, test loss is 18.15, while test loss is 20.42 for model 0. Thus model 1 has a better loss than model 0. However, what is unexpected is that, in the beginning, model 1's loss decreases slower than model 0's." + "For model 1, test loss is 17.35, while test loss is 19.05 for model 0. Thus model 1 has a better loss than model 0. However, what is unexpected is that, in the beginning, model 1's loss decreases slower than model 0's." ] }, { @@ -920,15 +964,27 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 64, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[43.45363824605942, 33.786904842853545, 29.978750259280204, 27.777584496736527, 26.11793281197548, 24.786260991096498, 23.703872640132904, 22.74807582437992, 21.79085268616676, 20.92527386188507, 20.174014331400393, 19.419565526545046, 18.71952503979206]\n", - "[45.348057844638824, 39.64908684611321, 35.00802879333496, 32.13809435069561, 30.21873086452484, 28.807953109145163, 27.365781868696214, 26.038266357183456, 24.863524509072302, 23.610995230078696, 22.689530485272407, 21.60567447721958, 20.795099827349187]\n" + "Test Loss: 17.552004\n", + "\n", + "Test Accuracy of airplane: 71% (716/1000)\n", + "Test Accuracy of automobile: 82% (820/1000)\n", + "Test Accuracy of bird: 51% (519/1000)\n", + "Test Accuracy of cat: 55% (550/1000)\n", + "Test Accuracy of deer: 63% (636/1000)\n", + "Test Accuracy of dog: 56% (569/1000)\n", + "Test Accuracy of frog: 78% (780/1000)\n", + "Test Accuracy of horse: 75% (751/1000)\n", + "Test Accuracy of ship: 87% (875/1000)\n", + "Test Accuracy of truck: 75% (756/1000)\n", + "\n", + "Test Accuracy (Overall): 69% (6972/10000)\n" ] } ], @@ -999,7 +1055,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "For model 1, accuracy is , while accuracy is for model 0." + "For model 1, overall accuracy is 69 %, while overall accuracy is 60 %for model 0. Model 1 is therefore much more accurate than model 0." ] }, { @@ -1116,7 +1172,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "First for the initial model :" + "### 1. Classification test accuracy of the initial model" ] }, { @@ -1213,7 +1269,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Then for the quantized model :" + "### 2. Classification test accuracy of the quantized model" ] }, { @@ -1310,7 +1366,83 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The result is that the test accuracy is really similar for the initial model and for the quantized model." + "The result is that the test accuracy is almost the same for the initial model and for the quantized model." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3. Aware quantization" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# quantize model\n", + "quantized_model = torch.quantization.quantize_dynamic(model, dtype=torch.qint8)\n", + "\n", + "# track test loss\n", + "quantized_test_loss = 0.0\n", + "quantized_class_correct = list(0.0 for i in range(10))\n", + "quantized_class_total = list(0.0 for i in range(10))\n", + "\n", + "quantized_model.eval()\n", + "# iterate over test data\n", + "for data, target in test_loader:\n", + " # move tensors to GPU if CUDA is available\n", + " if train_on_gpu:\n", + " data, target = data.cuda(), target.cuda()\n", + " # forward pass: compute predicted outputs by passing inputs to the model\n", + " output = quantized_model(data)\n", + " # calculate the batch loss\n", + " loss = criterion(output, target)\n", + " # update test loss\n", + " quantized_test_loss += loss.item() * data.size(0)\n", + " # convert output probabilities to predicted class\n", + " _, pred = torch.max(output, 1)\n", + " # compare predictions to true label\n", + " correct_tensor = pred.eq(target.data.view_as(pred))\n", + " correct = (\n", + " np.squeeze(correct_tensor.numpy())\n", + " if not train_on_gpu\n", + " else np.squeeze(correct_tensor.cpu().numpy())\n", + " )\n", + " # calculate test accuracy for each object class\n", + " for i in range(batch_size):\n", + " label = target.data[i]\n", + " quantized_class_correct[label] += correct[i].item()\n", + " quantized_class_total[label] += 1\n", + "\n", + "# average test loss\n", + "quantized_test_loss = quantized_test_loss / len(test_loader)\n", + "print(\"Test Loss: {:.6f}\\n\".format(quantized_test_loss))\n", + "\n", + "for i in range(10):\n", + " if quantized_class_total[i] > 0:\n", + " print(\n", + " \"Test Accuracy of %5s: %2d%% (%2d/%2d)\"\n", + " % (\n", + " classes[i],\n", + " 100 * quantized_class_correct[i] / quantized_class_total[i],\n", + " np.sum(quantized_class_correct[i]),\n", + " np.sum(quantized_class_total[i]),\n", + " )\n", + " )\n", + " else:\n", + " print(\"Test Accuracy of %5s: N/A (no training examples)\" % (classes[i]))\n", + "\n", + "print(\n", + " \"\\nTest Accuracy (Overall): %2d%% (%2d/%2d)\"\n", + " % (\n", + " 100.0 * np.sum(quantized_class_correct) / np.sum(quantized_class_total),\n", + " np.sum(quantized_class_correct),\n", + " np.sum(quantized_class_total),\n", + " )\n", + ")" ] }, { -- GitLab