{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Réseaux de neurones (Keras)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"scikit-learn version: 0.23.2\n",
"TensorFlow version: 2.3.1\n",
"Keras version: 2.4.0\n"
]
}
],
"source": [
"import sklearn\n",
"\n",
"print(f\"scikit-learn version: {sklearn.__version__}\")\n",
"\n",
"from sklearn.datasets import make_moons, make_circles\n",
"\n",
"import tensorflow as tf\n",
"\n",
"print(f\"TensorFlow version: {tf.__version__}\")\n",
"print(f\"Keras version: {tf.keras.__version__}\")\n",
"\n",
"from tensorflow.keras.models import Sequential\n",
"from tensorflow.keras.layers import Dense, Dropout, Flatten\n",
"from tensorflow.keras.optimizers import SGD, Adam, Adagrad\n",
"from tensorflow.keras.datasets import mnist, imdb\n",
"from tensorflow.keras.utils import to_categorical\n",
"from tensorflow.keras import regularizers"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Créer un modèle"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.datasets import make_moons, make_circles\n",
"x_train, y_train = make_moons(n_samples=1000, noise=0.10, random_state=0)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"sequential_3\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"dense_6 (Dense) (None, 3) 9 \n",
"_________________________________________________________________\n",
"dropout_2 (Dropout) (None, 3) 0 \n",
"_________________________________________________________________\n",
"dense_7 (Dense) (None, 1) 4 \n",
"=================================================================\n",
"Total params: 13\n",
"Trainable params: 13\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
}
],
"source": [
"# Create a new neural network as a linear stack of layers (other architectures exist)\n",
"model = Sequential()\n",
"\n",
"# Add a 3-neurons hidden layer using tanh as activation function\n",
"activations = ['relu', 'tanh', 'sigmoid', 'softmax']\n",
"model.add(Dense(3, activation=\"tanh\", input_shape=(2,)))\n",
"model.add(Dropout(0.25))\n",
"model.add(Dense(1, activation=\"sigmoid\"))\n",
"\n",
"# Describe the model\n",
"model.summary()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Optimisation"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"optimizer = SGD(learning_rate=0.01)\n",
"otpimizer = Adagrad(learning_rate=0.001)\n",
"optimizer = Adam(learning_rate=0.001)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"loss = 'binary_crossentropy'\n",
"loss = 'categorical_crossentropy'"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"metrics = ['accuracy']"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"model.compile(\n",
" optimizer=optimizer, loss=loss, metrics=metrics\n",
")\n",
"\n",
"# Launch the training of the network on the data\n",
"history = model.fit(x_train, y_train, verbose=0, epochs=40, batch_size=32)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Training loss: 0.00000\n",
"Training accuracy: 0.55700\n"
]
}
],
"source": [
"# Compute the loss & metrics values for the trained network\n",
"loss, acc = model.evaluate(x_train, y_train, verbose=0)\n",
"\n",
"print(f\"Training loss: {loss:.05f}\")\n",
"print(f\"Training accuracy: {acc:.05f}\")"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"# Saving model for future use\n",
"model_json = model.to_json()\n",
"\n",
"with open(\"model.json\", \"w\") as json_file:\n",
" json_file.write(model_json)\n",
"\n",
"model.save_weights(\"model.h5\")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}