mirror of
https://github.com/ArthurDanjou/ArtStudies.git
synced 2026-01-25 07:52:39 +01:00
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:
@@ -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",
|
||||
" )"
|
||||
]
|
||||
},
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
")"
|
||||
]
|
||||
},
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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()"
|
||||
]
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user