diff --git a/notebooks/08A Neural Networks/Neural Networks.ipynb b/notebooks/08A Neural Networks/Neural Networks.ipynb
index da70ba0730b41515dd75f9275a581bcb3c7bbbba..2351e8c3c974ce0f0c3c0c0360b8e2bba9b0eb62 100644
--- a/notebooks/08A Neural Networks/Neural Networks.ipynb	
+++ b/notebooks/08A Neural Networks/Neural Networks.ipynb	
@@ -10,7 +10,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 1,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -50,9 +50,170 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 2,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>class</th>\n",
+       "      <th>t0</th>\n",
+       "      <th>t1</th>\n",
+       "      <th>t2</th>\n",
+       "      <th>t3</th>\n",
+       "      <th>t4</th>\n",
+       "      <th>t5</th>\n",
+       "      <th>t6</th>\n",
+       "      <th>t7</th>\n",
+       "      <th>t8</th>\n",
+       "      <th>t9</th>\n",
+       "      <th>t10</th>\n",
+       "      <th>t11</th>\n",
+       "      <th>t12</th>\n",
+       "      <th>t13</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>319611</th>\n",
+       "      <td>0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>1.0</td>\n",
+       "      <td>146.280197</td>\n",
+       "      <td>140.947647</td>\n",
+       "      <td>156.520523</td>\n",
+       "      <td>1.327652</td>\n",
+       "      <td>1.226660</td>\n",
+       "      <td>6.906684</td>\n",
+       "      <td>0.875825</td>\n",
+       "      <td>-0.840607</td>\n",
+       "      <td>-6.258710</td>\n",
+       "      <td>1.781264</td>\n",
+       "      <td>1.673328</td>\n",
+       "      <td>9.109941</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>422480</th>\n",
+       "      <td>1</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>1.0</td>\n",
+       "      <td>143.030655</td>\n",
+       "      <td>139.559387</td>\n",
+       "      <td>129.186966</td>\n",
+       "      <td>1.597597</td>\n",
+       "      <td>3.101804</td>\n",
+       "      <td>15.433615</td>\n",
+       "      <td>-1.824237</td>\n",
+       "      <td>-2.970705</td>\n",
+       "      <td>-10.597172</td>\n",
+       "      <td>2.514441</td>\n",
+       "      <td>4.465198</td>\n",
+       "      <td>19.731569</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>84975</th>\n",
+       "      <td>0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>1.0</td>\n",
+       "      <td>147.153473</td>\n",
+       "      <td>141.157043</td>\n",
+       "      <td>110.398575</td>\n",
+       "      <td>1.944562</td>\n",
+       "      <td>1.487713</td>\n",
+       "      <td>11.178103</td>\n",
+       "      <td>-1.144288</td>\n",
+       "      <td>0.326726</td>\n",
+       "      <td>1.124529</td>\n",
+       "      <td>2.471050</td>\n",
+       "      <td>1.857452</td>\n",
+       "      <td>14.259531</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>238325</th>\n",
+       "      <td>1</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>1.0</td>\n",
+       "      <td>147.372986</td>\n",
+       "      <td>145.486023</td>\n",
+       "      <td>149.352173</td>\n",
+       "      <td>1.321837</td>\n",
+       "      <td>2.165096</td>\n",
+       "      <td>5.307303</td>\n",
+       "      <td>0.650749</td>\n",
+       "      <td>0.377656</td>\n",
+       "      <td>4.118001</td>\n",
+       "      <td>1.801254</td>\n",
+       "      <td>2.706682</td>\n",
+       "      <td>7.561509</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>90782</th>\n",
+       "      <td>0</td>\n",
+       "      <td>0.0</td>\n",
+       "      <td>1.0</td>\n",
+       "      <td>148.279007</td>\n",
+       "      <td>137.781082</td>\n",
+       "      <td>122.209396</td>\n",
+       "      <td>1.578060</td>\n",
+       "      <td>1.107929</td>\n",
+       "      <td>13.728745</td>\n",
+       "      <td>-1.066543</td>\n",
+       "      <td>-0.334992</td>\n",
+       "      <td>-9.316337</td>\n",
+       "      <td>2.135928</td>\n",
+       "      <td>1.439974</td>\n",
+       "      <td>16.589279</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "        class   t0   t1          t2          t3          t4        t5  \\\n",
+       "319611      0  0.0  1.0  146.280197  140.947647  156.520523  1.327652   \n",
+       "422480      1  0.0  1.0  143.030655  139.559387  129.186966  1.597597   \n",
+       "84975       0  0.0  1.0  147.153473  141.157043  110.398575  1.944562   \n",
+       "238325      1  0.0  1.0  147.372986  145.486023  149.352173  1.321837   \n",
+       "90782       0  0.0  1.0  148.279007  137.781082  122.209396  1.578060   \n",
+       "\n",
+       "              t6         t7        t8        t9        t10       t11  \\\n",
+       "319611  1.226660   6.906684  0.875825 -0.840607  -6.258710  1.781264   \n",
+       "422480  3.101804  15.433615 -1.824237 -2.970705 -10.597172  2.514441   \n",
+       "84975   1.487713  11.178103 -1.144288  0.326726   1.124529  2.471050   \n",
+       "238325  2.165096   5.307303  0.650749  0.377656   4.118001  1.801254   \n",
+       "90782   1.107929  13.728745 -1.066543 -0.334992  -9.316337  2.135928   \n",
+       "\n",
+       "             t12        t13  \n",
+       "319611  1.673328   9.109941  \n",
+       "422480  4.465198  19.731569  \n",
+       "84975   1.857452  14.259531  \n",
+       "238325  2.706682   7.561509  \n",
+       "90782   1.439974  16.589279  "
+      ]
+     },
+     "execution_count": 2,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
    "source": [
     "df = pd.read_csv(\"skin_disease.csv\")\n",
     "df = df.sample(frac=1)\n",
@@ -62,7 +223,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 3,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -96,11 +257,8 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 4,
    "metadata": {
-    "jupyter": {
-     "source_hidden": true
-    },
     "solution2": "hidden",
     "tags": []
    },
@@ -118,7 +276,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 5,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -137,7 +295,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 6,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -168,15 +326,25 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 7,
    "metadata": {
-    "jupyter": {
-     "source_hidden": true
-    },
     "solution2": "hidden",
     "tags": []
    },
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
    "source": [
     "mlp.fit(X_train, y_train)\n",
     "plot_costs(mlp.loss_curve_)"
@@ -191,7 +359,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 8,
    "metadata": {
     "solution2": "hidden",
     "solution2_first": true
@@ -214,11 +382,8 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 9,
    "metadata": {
-    "jupyter": {
-     "source_hidden": true
-    },
     "solution2": "hidden",
     "tags": []
    },
@@ -230,7 +395,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 10,
    "metadata": {
     "solution2": "hidden",
     "solution2_first": true
@@ -253,11 +418,8 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 11,
    "metadata": {
-    "jupyter": {
-     "source_hidden": true
-    },
     "solution2": "hidden",
     "tags": []
    },
@@ -269,7 +431,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 12,
    "metadata": {
     "solution2": "hidden",
     "solution2_first": true
@@ -301,11 +463,8 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 13,
    "metadata": {
-    "jupyter": {
-     "source_hidden": true
-    },
     "solution2": "hidden",
     "tags": []
    },
@@ -340,7 +499,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 14,
    "metadata": {
     "solution2": "hidden",
     "solution2_first": true
@@ -362,15 +521,20 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 15,
    "metadata": {
-    "jupyter": {
-     "source_hidden": true
-    },
     "solution2": "hidden",
     "tags": []
    },
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Are the outputs the same: True\n"
+     ]
+    }
+   ],
    "source": [
     "y_pred_scikit = mlp.predict(X_test)\n",
     "y_pred_own = predict(mlp, X_test.values)\n",
@@ -404,15 +568,21 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 16,
    "metadata": {
-    "jupyter": {
-     "source_hidden": true
-    },
     "solution2": "hidden",
     "tags": []
    },
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Accuracy: 0.9461\n",
+      "F1: 0.6573\n"
+     ]
+    }
+   ],
    "source": [
     "y_pred = predict(mlp, X_test.values)\n",
     "\n",
@@ -433,9 +603,24 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 17,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "2022-11-09 12:22:59.466379: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2 FMA\n",
+      "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n",
+      "2022-11-09 12:23:03.389776: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory\n",
+      "2022-11-09 12:23:03.389850: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.\n",
+      "2022-11-09 12:23:03.598773: E tensorflow/stream_executor/cuda/cuda_blas.cc:2981] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n",
+      "2022-11-09 12:23:06.424049: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer.so.7'; dlerror: libnvinfer.so.7: cannot open shared object file: No such file or directory\n",
+      "2022-11-09 12:23:06.424647: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer_plugin.so.7'; dlerror: libnvinfer_plugin.so.7: cannot open shared object file: No such file or directory\n",
+      "2022-11-09 12:23:06.424681: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Cannot dlopen some TensorRT libraries. If you would like to use Nvidia GPU with TensorRT, please make sure the missing libraries mentioned above are installed properly.\n"
+     ]
+    }
+   ],
    "source": [
     "import tensorflow as tf"
    ]
@@ -449,9 +634,42 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 18,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "2022-11-09 12:23:12.221548: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory\n",
+      "2022-11-09 12:23:12.221712: W tensorflow/stream_executor/cuda/cuda_driver.cc:263] failed call to cuInit: UNKNOWN ERROR (303)\n",
+      "2022-11-09 12:23:12.221804: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:156] kernel driver does not appear to be running on this host (fabian-2eh-adml-2dhslu-2dhs22-2dv2-9895ed4e-0): /proc/driver/nvidia/version does not exist\n",
+      "2022-11-09 12:23:12.244111: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2 FMA\n",
+      "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n"
+     ]
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Model: \"sequential\"\n",
+      "_________________________________________________________________\n",
+      " Layer (type)                Output Shape              Param #   \n",
+      "=================================================================\n",
+      " dense (Dense)               (None, 30)                450       \n",
+      "                                                                 \n",
+      " dense_1 (Dense)             (None, 15)                465       \n",
+      "                                                                 \n",
+      " dense_2 (Dense)             (None, 1)                 16        \n",
+      "                                                                 \n",
+      "=================================================================\n",
+      "Total params: 931\n",
+      "Trainable params: 931\n",
+      "Non-trainable params: 0\n",
+      "_________________________________________________________________\n"
+     ]
+    }
+   ],
    "source": [
     "dataset_dim = X_train.shape[1]\n",
     "\n",
@@ -471,9 +689,316 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 19,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Epoch 1/150\n",
+      "59/59 [==============================] - 2s 4ms/step - loss: 1.8988 - accuracy: 0.8632\n",
+      "Epoch 2/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.3419 - accuracy: 0.8976\n",
+      "Epoch 3/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.2086 - accuracy: 0.9150\n",
+      "Epoch 4/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1837 - accuracy: 0.9228\n",
+      "Epoch 5/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1789 - accuracy: 0.9243\n",
+      "Epoch 6/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1732 - accuracy: 0.9267\n",
+      "Epoch 7/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1703 - accuracy: 0.9288\n",
+      "Epoch 8/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1669 - accuracy: 0.9303\n",
+      "Epoch 9/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1639 - accuracy: 0.9319\n",
+      "Epoch 10/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1613 - accuracy: 0.9327\n",
+      "Epoch 11/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1617 - accuracy: 0.9332\n",
+      "Epoch 12/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1604 - accuracy: 0.9337\n",
+      "Epoch 13/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1566 - accuracy: 0.9352\n",
+      "Epoch 14/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1577 - accuracy: 0.9350\n",
+      "Epoch 15/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1559 - accuracy: 0.9356\n",
+      "Epoch 16/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1551 - accuracy: 0.9361\n",
+      "Epoch 17/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1524 - accuracy: 0.9377\n",
+      "Epoch 18/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1513 - accuracy: 0.9374\n",
+      "Epoch 19/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1530 - accuracy: 0.9369\n",
+      "Epoch 20/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1529 - accuracy: 0.9377\n",
+      "Epoch 21/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1504 - accuracy: 0.9379\n",
+      "Epoch 22/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1495 - accuracy: 0.9383\n",
+      "Epoch 23/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1483 - accuracy: 0.9390\n",
+      "Epoch 24/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1499 - accuracy: 0.9380\n",
+      "Epoch 25/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1474 - accuracy: 0.9387\n",
+      "Epoch 26/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1483 - accuracy: 0.9385\n",
+      "Epoch 27/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1472 - accuracy: 0.9391\n",
+      "Epoch 28/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1446 - accuracy: 0.9404\n",
+      "Epoch 29/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1452 - accuracy: 0.9400\n",
+      "Epoch 30/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1530 - accuracy: 0.9370\n",
+      "Epoch 31/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1472 - accuracy: 0.9388\n",
+      "Epoch 32/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1493 - accuracy: 0.9376\n",
+      "Epoch 33/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1454 - accuracy: 0.9396\n",
+      "Epoch 34/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1441 - accuracy: 0.9396\n",
+      "Epoch 35/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1442 - accuracy: 0.9396\n",
+      "Epoch 36/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1446 - accuracy: 0.9404\n",
+      "Epoch 37/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1427 - accuracy: 0.9410\n",
+      "Epoch 38/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1418 - accuracy: 0.9412\n",
+      "Epoch 39/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1439 - accuracy: 0.9404\n",
+      "Epoch 40/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1417 - accuracy: 0.9409\n",
+      "Epoch 41/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1440 - accuracy: 0.9400\n",
+      "Epoch 42/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1410 - accuracy: 0.9416\n",
+      "Epoch 43/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1416 - accuracy: 0.9412\n",
+      "Epoch 44/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1427 - accuracy: 0.9406\n",
+      "Epoch 45/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1397 - accuracy: 0.9418\n",
+      "Epoch 46/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1392 - accuracy: 0.9423\n",
+      "Epoch 47/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1410 - accuracy: 0.9412\n",
+      "Epoch 48/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1420 - accuracy: 0.9414\n",
+      "Epoch 49/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1385 - accuracy: 0.9420\n",
+      "Epoch 50/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1392 - accuracy: 0.9418\n",
+      "Epoch 51/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1397 - accuracy: 0.9424\n",
+      "Epoch 52/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1424 - accuracy: 0.9413\n",
+      "Epoch 53/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1386 - accuracy: 0.9422\n",
+      "Epoch 54/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1402 - accuracy: 0.9418\n",
+      "Epoch 55/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1389 - accuracy: 0.9426\n",
+      "Epoch 56/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1394 - accuracy: 0.9434\n",
+      "Epoch 57/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1387 - accuracy: 0.9418\n",
+      "Epoch 58/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1405 - accuracy: 0.9425\n",
+      "Epoch 59/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1381 - accuracy: 0.9428\n",
+      "Epoch 60/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1382 - accuracy: 0.9425\n",
+      "Epoch 61/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1365 - accuracy: 0.9438\n",
+      "Epoch 62/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1366 - accuracy: 0.9437\n",
+      "Epoch 63/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1393 - accuracy: 0.9426\n",
+      "Epoch 64/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1363 - accuracy: 0.9437\n",
+      "Epoch 65/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1382 - accuracy: 0.9427\n",
+      "Epoch 66/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1362 - accuracy: 0.9433\n",
+      "Epoch 67/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1385 - accuracy: 0.9429\n",
+      "Epoch 68/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1371 - accuracy: 0.9428\n",
+      "Epoch 69/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1459 - accuracy: 0.9398\n",
+      "Epoch 70/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1493 - accuracy: 0.9384\n",
+      "Epoch 71/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1365 - accuracy: 0.9436\n",
+      "Epoch 72/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1375 - accuracy: 0.9431\n",
+      "Epoch 73/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1358 - accuracy: 0.9443\n",
+      "Epoch 74/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1353 - accuracy: 0.9438\n",
+      "Epoch 75/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1368 - accuracy: 0.9436\n",
+      "Epoch 76/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1357 - accuracy: 0.9437\n",
+      "Epoch 77/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1387 - accuracy: 0.9436\n",
+      "Epoch 78/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1372 - accuracy: 0.9428\n",
+      "Epoch 79/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1356 - accuracy: 0.9449\n",
+      "Epoch 80/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1343 - accuracy: 0.9446\n",
+      "Epoch 81/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1339 - accuracy: 0.9442\n",
+      "Epoch 82/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1362 - accuracy: 0.9439\n",
+      "Epoch 83/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1414 - accuracy: 0.9427\n",
+      "Epoch 84/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1340 - accuracy: 0.9449\n",
+      "Epoch 85/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1385 - accuracy: 0.9426\n",
+      "Epoch 86/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1336 - accuracy: 0.9449\n",
+      "Epoch 87/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1348 - accuracy: 0.9446\n",
+      "Epoch 88/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1344 - accuracy: 0.9446\n",
+      "Epoch 89/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1336 - accuracy: 0.9442\n",
+      "Epoch 90/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1340 - accuracy: 0.9444\n",
+      "Epoch 91/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1432 - accuracy: 0.9413\n",
+      "Epoch 92/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1357 - accuracy: 0.9444\n",
+      "Epoch 93/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1338 - accuracy: 0.9448\n",
+      "Epoch 94/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1336 - accuracy: 0.9446\n",
+      "Epoch 95/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1336 - accuracy: 0.9448\n",
+      "Epoch 96/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1330 - accuracy: 0.9452\n",
+      "Epoch 97/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1334 - accuracy: 0.9448\n",
+      "Epoch 98/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1331 - accuracy: 0.9447\n",
+      "Epoch 99/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1348 - accuracy: 0.9439\n",
+      "Epoch 100/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1326 - accuracy: 0.9447\n",
+      "Epoch 101/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1331 - accuracy: 0.9456\n",
+      "Epoch 102/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1327 - accuracy: 0.9458\n",
+      "Epoch 103/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1361 - accuracy: 0.9438\n",
+      "Epoch 104/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1339 - accuracy: 0.9442\n",
+      "Epoch 105/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1311 - accuracy: 0.9461\n",
+      "Epoch 106/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1335 - accuracy: 0.9455\n",
+      "Epoch 107/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1336 - accuracy: 0.9452\n",
+      "Epoch 108/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1303 - accuracy: 0.9463\n",
+      "Epoch 109/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1326 - accuracy: 0.9454\n",
+      "Epoch 110/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1328 - accuracy: 0.9461\n",
+      "Epoch 111/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1303 - accuracy: 0.9459\n",
+      "Epoch 112/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1306 - accuracy: 0.9460\n",
+      "Epoch 113/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1331 - accuracy: 0.9464\n",
+      "Epoch 114/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1339 - accuracy: 0.9451\n",
+      "Epoch 115/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1318 - accuracy: 0.9463\n",
+      "Epoch 116/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1318 - accuracy: 0.9455\n",
+      "Epoch 117/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1305 - accuracy: 0.9466\n",
+      "Epoch 118/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1307 - accuracy: 0.9459\n",
+      "Epoch 119/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1303 - accuracy: 0.9460\n",
+      "Epoch 120/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1307 - accuracy: 0.9461\n",
+      "Epoch 121/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1295 - accuracy: 0.9467\n",
+      "Epoch 122/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1359 - accuracy: 0.9447\n",
+      "Epoch 123/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1294 - accuracy: 0.9466\n",
+      "Epoch 124/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1311 - accuracy: 0.9461\n",
+      "Epoch 125/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1298 - accuracy: 0.9469\n",
+      "Epoch 126/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1295 - accuracy: 0.9472\n",
+      "Epoch 127/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1296 - accuracy: 0.9470\n",
+      "Epoch 128/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1307 - accuracy: 0.9467\n",
+      "Epoch 129/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1273 - accuracy: 0.9471\n",
+      "Epoch 130/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1287 - accuracy: 0.9473\n",
+      "Epoch 131/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1287 - accuracy: 0.9471\n",
+      "Epoch 132/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1335 - accuracy: 0.9462\n",
+      "Epoch 133/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1299 - accuracy: 0.9471\n",
+      "Epoch 134/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1297 - accuracy: 0.9473\n",
+      "Epoch 135/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1270 - accuracy: 0.9472\n",
+      "Epoch 136/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1333 - accuracy: 0.9459\n",
+      "Epoch 137/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1282 - accuracy: 0.9473\n",
+      "Epoch 138/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1284 - accuracy: 0.9469\n",
+      "Epoch 139/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1302 - accuracy: 0.9466\n",
+      "Epoch 140/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1274 - accuracy: 0.9474\n",
+      "Epoch 141/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1299 - accuracy: 0.9471\n",
+      "Epoch 142/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1323 - accuracy: 0.9468\n",
+      "Epoch 143/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1275 - accuracy: 0.9480\n",
+      "Epoch 144/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1274 - accuracy: 0.9480\n",
+      "Epoch 145/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1305 - accuracy: 0.9472\n",
+      "Epoch 146/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1266 - accuracy: 0.9480\n",
+      "Epoch 147/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1284 - accuracy: 0.9474\n",
+      "Epoch 148/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1303 - accuracy: 0.9472\n",
+      "Epoch 149/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1273 - accuracy: 0.9484\n",
+      "Epoch 150/150\n",
+      "59/59 [==============================] - 0s 4ms/step - loss: 0.1280 - accuracy: 0.9476\n"
+     ]
+    }
+   ],
    "source": [
     "adam = tf.keras.optimizers.Adam()\n",
     "model.compile(optimizer=adam, loss='binary_crossentropy', metrics=['accuracy'])\n",
@@ -490,9 +1015,22 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 20,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
    "source": [
     "plot_costs(history.history[\"loss\"])"
    ]
@@ -506,9 +1044,19 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 21,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "1250/1250 [==============================] - 3s 2ms/step\n",
+      "Accuracy: 0.9491\n",
+      "F1: 0.6838\n"
+     ]
+    }
+   ],
    "source": [
     "y_pred = model.predict(X_test)\n",
     "y_pred = np.array(y_pred > 0.5, dtype=int).squeeze()\n",
@@ -534,6 +1082,13 @@
     "> Now answer the Ilias Quiz 08A Neural Networks - Notebook Verification"
    ]
   },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
   {
    "cell_type": "code",
    "execution_count": null,