diff --git a/TD2 Deep Learning.ipynb b/TD2 Deep Learning.ipynb
index 9e9de45c82687430c96e332523e2bc59f78fd14a..184e0396037195e6cdb030eef5db076be0ca4722 100644
--- a/TD2 Deep Learning.ipynb	
+++ b/TD2 Deep Learning.ipynb	
@@ -627,7 +627,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 3,
+   "execution_count": 7,
    "id": "6e18f2fd",
    "metadata": {},
    "outputs": [
@@ -661,7 +661,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 4,
+   "execution_count": 8,
    "id": "462666a2",
    "metadata": {},
    "outputs": [
@@ -669,21 +669,7 @@
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "Downloading https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz to data\\cifar-10-python.tar.gz\n"
-     ]
-    },
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "100%|██████████| 170498071/170498071 [00:32<00:00, 5210117.49it/s]\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Extracting data\\cifar-10-python.tar.gz to data\n",
+      "Files already downloaded and verified\n",
       "Files already downloaded and verified\n"
      ]
     }
@@ -756,7 +742,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 6,
+   "execution_count": 9,
    "id": "317bf070",
    "metadata": {},
    "outputs": [
@@ -820,10 +806,62 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 10,
    "id": "4b53f229",
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Epoch: 0 \tTraining Loss: 42.949870 \tValidation Loss: 37.584614\n",
+      "Validation loss decreased (inf --> 37.584614).  Saving model ...\n",
+      "Epoch: 1 \tTraining Loss: 33.817952 \tValidation Loss: 31.186220\n",
+      "Validation loss decreased (37.584614 --> 31.186220).  Saving model ...\n",
+      "Epoch: 2 \tTraining Loss: 30.420298 \tValidation Loss: 28.741311\n",
+      "Validation loss decreased (31.186220 --> 28.741311).  Saving model ...\n",
+      "Epoch: 3 \tTraining Loss: 28.518569 \tValidation Loss: 27.046289\n",
+      "Validation loss decreased (28.741311 --> 27.046289).  Saving model ...\n",
+      "Epoch: 4 \tTraining Loss: 26.906243 \tValidation Loss: 25.455830\n",
+      "Validation loss decreased (27.046289 --> 25.455830).  Saving model ...\n",
+      "Epoch: 5 \tTraining Loss: 25.378933 \tValidation Loss: 26.223423\n",
+      "Epoch: 6 \tTraining Loss: 24.107086 \tValidation Loss: 23.348146\n",
+      "Validation loss decreased (25.455830 --> 23.348146).  Saving model ...\n",
+      "Epoch: 7 \tTraining Loss: 23.004827 \tValidation Loss: 23.824093\n",
+      "Epoch: 8 \tTraining Loss: 22.047786 \tValidation Loss: 22.660026\n",
+      "Validation loss decreased (23.348146 --> 22.660026).  Saving model ...\n",
+      "Epoch: 9 \tTraining Loss: 21.114166 \tValidation Loss: 22.566304\n",
+      "Validation loss decreased (22.660026 --> 22.566304).  Saving model ...\n",
+      "Epoch: 10 \tTraining Loss: 20.385692 \tValidation Loss: 21.482606\n",
+      "Validation loss decreased (22.566304 --> 21.482606).  Saving model ...\n",
+      "Epoch: 11 \tTraining Loss: 19.569045 \tValidation Loss: 22.839890\n",
+      "Epoch: 12 \tTraining Loss: 18.854037 \tValidation Loss: 20.897455\n",
+      "Validation loss decreased (21.482606 --> 20.897455).  Saving model ...\n",
+      "Epoch: 13 \tTraining Loss: 18.168339 \tValidation Loss: 21.228469\n",
+      "Epoch: 14 \tTraining Loss: 17.576220 \tValidation Loss: 21.396578\n",
+      "Epoch: 15 \tTraining Loss: 16.911857 \tValidation Loss: 21.200629\n"
+     ]
+    },
+    {
+     "ename": "KeyboardInterrupt",
+     "evalue": "",
+     "output_type": "error",
+     "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;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\\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:174\u001b[0m, in \u001b[0;36mto_tensor\u001b[1;34m(pic)\u001b[0m\n\u001b[0;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[1;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[0;32m    175\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m    176\u001b[0m     \u001b[39mreturn\u001b[39;00m img\n",
+      "\u001b[1;31mKeyboardInterrupt\u001b[0m: "
+     ]
+    }
+   ],
    "source": [
     "import torch.optim as optim\n",
     "\n",
@@ -904,14 +942,26 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 12,
    "id": "d39df818",
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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",
+      "text/plain": [
+       "<Figure size 640x480 with 1 Axes>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
    "source": [
     "import matplotlib.pyplot as plt\n",
     "\n",
-    "plt.plot(range(n_epochs), train_loss_list)\n",
+    "n_epochs_overfit = 16 #Otherwise len(train_lost_list) < n_epochs\n",
+    "plt.plot(range(n_epochs_overfit), train_loss_list)\n",
     "plt.xlabel(\"Epoch\")\n",
     "plt.ylabel(\"Loss\")\n",
     "plt.title(\"Performance of Model 1\")\n",
@@ -928,10 +978,31 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 13,
    "id": "e93efdfc",
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Test Loss: 21.487796\n",
+      "\n",
+      "Test Accuracy of airplane: 65% (657/1000)\n",
+      "Test Accuracy of automobile: 74% (742/1000)\n",
+      "Test Accuracy of  bird: 50% (508/1000)\n",
+      "Test Accuracy of   cat: 39% (398/1000)\n",
+      "Test Accuracy of  deer: 57% (571/1000)\n",
+      "Test Accuracy of   dog: 47% (471/1000)\n",
+      "Test Accuracy of  frog: 78% (785/1000)\n",
+      "Test Accuracy of horse: 67% (673/1000)\n",
+      "Test Accuracy of  ship: 76% (762/1000)\n",
+      "Test Accuracy of truck: 69% (699/1000)\n",
+      "\n",
+      "Test Accuracy (Overall): 62% (6266/10000)\n"
+     ]
+    }
+   ],
    "source": [
     "model.load_state_dict(torch.load(\"./model_cifar.pt\"))\n",
     "\n",
@@ -1012,6 +1083,76 @@
     "Compare the results obtained with this new network to those obtained previously."
    ]
   },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## New network"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "CNN definition"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import torch.nn as nn\n",
+    "import torch.nn.functional as F\n",
+    "\n",
+    "# define the CNN architecture\n",
+    "\n",
+    "\n",
+    "class Net_1(nn.Module):\n",
+    "    def __init__(self):\n",
+    "        super(Net, self).__init__()\n",
+    "\n",
+    "        #Define the 3 convolutional layers\n",
+    "\n",
+    "        #First layer : 3 input channels, 16 output channels, kernel size 3, padding 1\n",
+    "        self.conv1 = nn.Conv2d(in_channels=3, out_channels=16, kernel_size=3, padding=1)\n",
+    "        self.pool1 = nn.MaxPool2d(2, 2) #MaxPool with kernel size 2 at first layer output\n",
+    "\n",
+    "        #Second layer : 16 input channels, 32 output channels, kernel size 3, padding 1\n",
+    "        self.conv2 = nn.Conv2d(in_channels=16, out_channels=32, kernel_size=3, padding=1)\n",
+    "        self.pool2 = nn.MaxPool2d(2, 2) #MaxPool with kernel size 2 at second layer output\n",
+    "\n",
+    "        #Third layer : 32 input channels, 64 output channels, kernel size 3, padding 1\n",
+    "        self.conv2 = nn.Conv2d(in_channels=32, out_channels=64, kernel_size=3, padding=1)\n",
+    "        self.pool2 = nn.MaxPool2d(2, 2) #MaxPool with kernel size 2 at third layer output\n",
+    "\n",
+    "\n",
+    "        #Define the 3 fully connected layers\n",
+    "\n",
+    "        #First layer\n",
+    "        self.fc1 = nn.Linear(16 * 5 * 5, 120)\n",
+    "        self.fc2 = nn.Linear(120, 84)\n",
+    "        self.fc3 = nn.Linear(84, 10)\n",
+    "\n",
+    "    def forward(self, x):\n",
+    "        x = self.pool(F.relu(self.conv1(x)))\n",
+    "        x = self.pool(F.relu(self.conv2(x)))\n",
+    "        x = x.view(-1, 16 * 5 * 5)\n",
+    "        x = F.relu(self.fc1(x))\n",
+    "        x = F.relu(self.fc2(x))\n",
+    "        x = self.fc3(x)\n",
+    "        return x\n",
+    "\n",
+    "\n",
+    "# create a complete CNN\n",
+    "model = Net()\n",
+    "print(model)\n",
+    "# move tensors to GPU if CUDA is available\n",
+    "if train_on_gpu:\n",
+    "    model.cuda()"
+   ]
+  },
   {
    "cell_type": "markdown",
    "id": "bc381cf4",