Refactor code for improved readability and consistency across multiple Jupyter notebooks

- Added missing commas in various print statements and function calls for better syntax.
- Reformatted code to enhance clarity, including breaking long lines and aligning parameters.
- Updated function signatures to use float type for sigma parameters instead of int for better precision.
- Cleaned up comments and documentation strings for clarity and consistency.
- Ensured consistent formatting in plotting functions and data handling.
This commit is contained in:
2025-12-13 23:38:17 +01:00
parent f89ff4a016
commit d5a6bfd339
50 changed files with 779 additions and 449 deletions

View File

@@ -27,25 +27,32 @@
"\n",
"sns.set(style=\"whitegrid\")\n",
"\n",
"import tensorflow as tf\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.preprocessing import StandardScaler\n",
"from tensorflow import keras\n",
"\n",
"(X_train_full, y_train_full), (X_test, y_test) = keras.datasets.mnist.load_data()\n",
"X_train, X_valid, y_train, y_valid = train_test_split(\n",
" X_train_full, y_train_full, train_size=0.8\n",
" X_train_full,\n",
" y_train_full,\n",
" train_size=0.8,\n",
")\n",
"\n",
"scaler = StandardScaler()\n",
"X_train = scaler.fit_transform(X_train.astype(np.float32).reshape(-1, 28 * 28)).reshape(\n",
" -1, 28, 28\n",
" -1,\n",
" 28,\n",
" 28,\n",
")\n",
"X_valid = scaler.transform(X_valid.astype(np.float32).reshape(-1, 28 * 28)).reshape(\n",
" -1, 28, 28\n",
" -1,\n",
" 28,\n",
" 28,\n",
")\n",
"X_test = scaler.transform(X_test.astype(np.float32).reshape(-1, 28 * 28)).reshape(\n",
" -1, 28, 28\n",
" -1,\n",
" 28,\n",
" 28,\n",
")"
]
},
@@ -79,13 +86,17 @@
" keras.layers.Input(shape=[28, 28]),\n",
" keras.layers.Flatten(),\n",
" keras.layers.Dense(\n",
" 256, activation=\"relu\", kernel_regularizer=keras.regularizers.l2(0.001)\n",
" 256,\n",
" activation=\"relu\",\n",
" kernel_regularizer=keras.regularizers.l2(0.001),\n",
" ),\n",
" keras.layers.Dense(\n",
" 128, activation=\"relu\", kernel_regularizer=keras.regularizers.l2(0.001)\n",
" 128,\n",
" activation=\"relu\",\n",
" kernel_regularizer=keras.regularizers.l2(0.001),\n",
" ),\n",
" keras.layers.Dense(10, activation=\"softmax\"),\n",
" ]\n",
" ],\n",
")"
]
},
@@ -174,7 +185,7 @@
" kernel_regularizer=keras.regularizers.l2(lambda_l2),\n",
" ),\n",
" keras.layers.Dense(10, activation=\"softmax\"),\n",
" ]\n",
" ],\n",
" )\n",
" model.compile(\n",
" loss=\"sparse_categorical_crossentropy\",\n",
@@ -220,7 +231,7 @@
" \"lambda_l2\": lambda_l2,\n",
" \"history\": pd.DataFrame(history.history),\n",
" \"n_epochs\": n_epochs,\n",
" }\n",
" },\n",
" )"
]
},

View File

@@ -58,7 +58,10 @@
"from sklearn.model_selection import train_test_split\n",
"\n",
"X_train, X_valid, y_train, y_valid = train_test_split(\n",
" X_train_full, y_train_full, test_size=0.2, random_state=42\n",
" X_train_full,\n",
" y_train_full,\n",
" test_size=0.2,\n",
" random_state=42,\n",
")\n",
"print(X_train.shape, y_train.shape)\n",
"print(X_valid.shape, y_valid.shape)"
@@ -181,7 +184,7 @@
" keras.layers.Dense(256, activation=\"relu\"),\n",
" keras.layers.Dense(128, activation=\"relu\"),\n",
" keras.layers.Dense(10, activation=\"softmax\"),\n",
" ]\n",
" ],\n",
")"
]
},
@@ -563,7 +566,7 @@
" keras.layers.Dense(256, activation=\"relu\"),\n",
" keras.layers.Dense(128, activation=\"relu\"),\n",
" keras.layers.Dense(10, activation=\"softmax\"),\n",
" ]\n",
" ],\n",
" )\n",
" model.compile(\n",
" loss=\"sparse_categorical_crossentropy\",\n",
@@ -673,7 +676,10 @@
" plt.subplot(1, 2, 1)\n",
" plt.plot(history_df[\"val_loss\"], linestyle=\"--\", color=colors[_])\n",
" plt.plot(\n",
" history_df[\"loss\"], label=f\"LR={learning_rate}\", alpha=0.5, color=colors[_]\n",
" history_df[\"loss\"],\n",
" label=f\"LR={learning_rate}\",\n",
" alpha=0.5,\n",
" color=colors[_],\n",
" )\n",
" plt.xlabel(\"Epochs\")\n",
" plt.ylabel(\"Loss\")\n",

View File

@@ -18,15 +18,12 @@
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"\n",
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"\n",
"sns.set(style=\"whitegrid\")\n",
"\n",
"import tensorflow as tf\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.preprocessing import StandardScaler\n",
"from tensorflow import keras\n",
@@ -35,18 +32,29 @@
" keras.datasets.fashion_mnist.load_data()\n",
")\n",
"X_train, X_valid, y_train, y_valid = train_test_split(\n",
" X_train_full, y_train_full, train_size=0.8\n",
" X_train_full,\n",
" y_train_full,\n",
" train_size=0.8,\n",
")\n",
"\n",
"scaler = StandardScaler()\n",
"X_train = scaler.fit_transform(X_train.astype(np.float32).reshape(-1, 28 * 28)).reshape(\n",
" -1, 28, 28, 1\n",
" -1,\n",
" 28,\n",
" 28,\n",
" 1,\n",
")\n",
"X_valid = scaler.transform(X_valid.astype(np.float32).reshape(-1, 28 * 28)).reshape(\n",
" -1, 28, 28, 1\n",
" -1,\n",
" 28,\n",
" 28,\n",
" 1,\n",
")\n",
"X_test = scaler.transform(X_test.astype(np.float32).reshape(-1, 28 * 28)).reshape(\n",
" -1, 28, 28, 1\n",
" -1,\n",
" 28,\n",
" 28,\n",
" 1,\n",
")"
]
},

View File

@@ -60,7 +60,10 @@
"from sklearn.model_selection import train_test_split\n",
"\n",
"X_train, X_valid, y_train, y_valid = train_test_split(\n",
" X_train_full, y_train_full, test_size=0.2, random_state=42\n",
" X_train_full,\n",
" y_train_full,\n",
" test_size=0.2,\n",
" random_state=42,\n",
")\n",
"print(X_train.shape, y_train.shape)\n",
"print(X_valid.shape, y_valid.shape)"
@@ -178,16 +181,22 @@
" [\n",
" keras.layers.Input(shape=(28, 28, 1)),\n",
" keras.layers.Conv2D(\n",
" filters=32, kernel_size=3, activation=\"relu\", padding=\"same\"\n",
" filters=32,\n",
" kernel_size=3,\n",
" activation=\"relu\",\n",
" padding=\"same\",\n",
" ),\n",
" keras.layers.Conv2D(\n",
" filters=32, kernel_size=3, activation=\"relu\", padding=\"same\"\n",
" filters=32,\n",
" kernel_size=3,\n",
" activation=\"relu\",\n",
" padding=\"same\",\n",
" ),\n",
" keras.layers.MaxPooling2D(pool_size=2, strides=2),\n",
" keras.layers.Flatten(),\n",
" keras.layers.Dense(units=64, activation=\"relu\"),\n",
" keras.layers.Dense(units=10, activation=\"softmax\"),\n",
" ]\n",
" ],\n",
")"
]
},
@@ -374,33 +383,45 @@
" [\n",
" keras.layers.Input(shape=(28, 28, 1)),\n",
" keras.layers.Conv2D(\n",
" filters=32, kernel_size=3, activation=\"relu\", padding=\"same\"\n",
" filters=32,\n",
" kernel_size=3,\n",
" activation=\"relu\",\n",
" padding=\"same\",\n",
" ),\n",
" keras.layers.BatchNormalization(),\n",
" keras.layers.Conv2D(\n",
" filters=32, kernel_size=3, activation=\"relu\", padding=\"same\"\n",
" filters=32,\n",
" kernel_size=3,\n",
" activation=\"relu\",\n",
" padding=\"same\",\n",
" ),\n",
" keras.layers.MaxPooling2D(pool_size=2, strides=2),\n",
" keras.layers.Flatten(),\n",
" keras.layers.Dense(units=64, activation=\"relu\"),\n",
" keras.layers.Dense(units=10, activation=\"softmax\"),\n",
" ]\n",
" ],\n",
" )\n",
" else:\n",
" model = keras.models.Sequential(\n",
" [\n",
" keras.layers.Input(shape=(28, 28, 1)),\n",
" keras.layers.Conv2D(\n",
" filters=32, kernel_size=3, activation=\"relu\", padding=\"same\"\n",
" filters=32,\n",
" kernel_size=3,\n",
" activation=\"relu\",\n",
" padding=\"same\",\n",
" ),\n",
" keras.layers.Conv2D(\n",
" filters=32, kernel_size=3, activation=\"relu\", padding=\"same\"\n",
" filters=32,\n",
" kernel_size=3,\n",
" activation=\"relu\",\n",
" padding=\"same\",\n",
" ),\n",
" keras.layers.MaxPooling2D(pool_size=2, strides=2),\n",
" keras.layers.Flatten(),\n",
" keras.layers.Dense(units=64, activation=\"relu\"),\n",
" keras.layers.Dense(units=10, activation=\"softmax\"),\n",
" ]\n",
" ],\n",
" )\n",
"\n",
" model.compile(\n",
@@ -653,7 +674,9 @@
"outputs": [],
"source": [
"def agregate_result(\n",
" results: list, normalized: bool, metric_name: str = \"accuracy\"\n",
" results: list,\n",
" normalized: bool,\n",
" metric_name: str = \"accuracy\",\n",
") -> pd.DataFrame:\n",
" train_curves = []\n",
" val_curves = []\n",
@@ -699,7 +722,9 @@
" ax = axs[idx]\n",
" for normalized in [True, False]:\n",
" train, val = agregate_result(\n",
" training_curves, normalized=normalized, metric_name=metric\n",
" training_curves,\n",
" normalized=normalized,\n",
" metric_name=metric,\n",
" )\n",
" train_runs = train.reshape(-1, epochs)\n",
" val_runs = val.reshape(-1, epochs)\n",

View File

@@ -20,7 +20,6 @@
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"\n",
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
@@ -300,23 +299,35 @@
" [\n",
" keras.layers.InputLayer(shape=(32, 32, 3)),\n",
" keras.layers.Conv2D(\n",
" filters=32, kernel_size=3, activation=\"relu\", padding=\"same\"\n",
" filters=32,\n",
" kernel_size=3,\n",
" activation=\"relu\",\n",
" padding=\"same\",\n",
" ),\n",
" keras.layers.Dropout(0.2),\n",
" keras.layers.Conv2D(\n",
" filters=32, kernel_size=3, activation=\"relu\", padding=\"same\"\n",
" filters=32,\n",
" kernel_size=3,\n",
" activation=\"relu\",\n",
" padding=\"same\",\n",
" ),\n",
" keras.layers.MaxPooling2D(pool_size=2),\n",
" keras.layers.Conv2D(\n",
" filters=16, kernel_size=3, activation=\"relu\", padding=\"same\"\n",
" filters=16,\n",
" kernel_size=3,\n",
" activation=\"relu\",\n",
" padding=\"same\",\n",
" ),\n",
" keras.layers.Dropout(0.2),\n",
" keras.layers.Conv2D(\n",
" filters=16, kernel_size=3, activation=\"relu\", padding=\"same\"\n",
" filters=16,\n",
" kernel_size=3,\n",
" activation=\"relu\",\n",
" padding=\"same\",\n",
" ),\n",
" keras.layers.Flatten(),\n",
" keras.layers.Dense(10, activation=\"softmax\"),\n",
" ]\n",
" ],\n",
" )\n",
"\n",
" return model\n",
@@ -348,7 +359,9 @@
"outputs": [],
"source": [
"def compile_train(\n",
" optimizer_function: str, learning_rate: float, **kwargs\n",
" optimizer_function: str,\n",
" learning_rate: float,\n",
" **kwargs,\n",
") -> keras.callbacks.History:\n",
" model = get_model()\n",
" optimizer = optimizer_function(learning_rate=learning_rate)\n",
@@ -401,7 +414,10 @@
"epochs = 5\n",
"batch_size = 64\n",
"history_adam = compile_train(\n",
" keras.optimizers.Adam, learning_rate=0.001, epochs=epochs, batch_size=batch_size\n",
" keras.optimizers.Adam,\n",
" learning_rate=0.001,\n",
" epochs=epochs,\n",
" batch_size=batch_size,\n",
")"
]
},
@@ -557,7 +573,10 @@
"histories = []\n",
"for optimizer in optimizers:\n",
" history = compile_train(\n",
" optimizer, learning_rate=learning_rate, epochs=epochs, batch_size=batch_size\n",
" optimizer,\n",
" learning_rate=learning_rate,\n",
" epochs=epochs,\n",
" batch_size=batch_size,\n",
" )\n",
" name = optimizer.__name__\n",
" label = f\"{name} (lr={learning_rate:.06})\"\n",

View File

@@ -17,10 +17,11 @@
"metadata": {},
"outputs": [],
"source": [
"import keras\n",
"import numpy as np\n",
"import seaborn as sns\n",
"\n",
"import keras\n",
"\n",
"sns.set(style=\"whitegrid\")\n",
"\n",
"\n",
@@ -149,7 +150,7 @@
" keras.layers.Embedding(\n",
" input_dim=vocabulary_size,\n",
" output_dim=dimension,\n",
" )\n",
" ),\n",
" )\n",
" model.add(keras.layers.SimpleRNN(128, return_sequences=False))\n",
" model.add(keras.layers.Dense(vocabulary_size, activation=\"softmax\"))\n",

View File

@@ -120,9 +120,7 @@
},
"outputs": [],
"source": [
"character_to_index = {\n",
" character: index for index, character in enumerate(characters)\n",
"}\n",
"character_to_index = {character: index for index, character in enumerate(characters)}\n",
"index_to_character = dict(enumerate(characters))"
]
},
@@ -317,7 +315,7 @@
" keras.layers.SimpleRNN(128, return_sequences=False),\n",
" # Ajouter une couche Dense\n",
" keras.layers.Dense(n_characters, activation=\"softmax\"),\n",
" ]\n",
" ],\n",
")\n",
"\n",
"model.summary()"
@@ -429,11 +427,14 @@
"print(len(epochs), len(historic[\"loss\"]))\n",
"\n",
"for index, (metric_name, axis) in enumerate(\n",
" zip([\"loss\", \"accuracy\"], [axis_1, axis_2], strict=False)\n",
" zip([\"loss\", \"accuracy\"], [axis_1, axis_2], strict=False),\n",
"):\n",
" color = sns.color_palette()[index]\n",
" axis.plot(\n",
" epochs[: len(historic[metric_name])], historic[metric_name], lw=2, color=color\n",
" epochs[: len(historic[metric_name])],\n",
" historic[metric_name],\n",
" lw=2,\n",
" color=color,\n",
" )\n",
" axis.plot(\n",
" epochs[: len(historic[\"val_\" + metric_name])],\n",
@@ -604,7 +605,8 @@
"outputs": [],
"source": [
"random_index = np.random.multinomial(\n",
" 1, y_test[np.random.randint(0, len(X_test) - 1)].ravel()\n",
" 1,\n",
" y_test[np.random.randint(0, len(X_test) - 1)].ravel(),\n",
").argmax()"
]
},