{ "cells": [ { "cell_type": "markdown", "id": "available-opportunity", "metadata": { "tags": [] }, "source": [ "# <span style=\"color:green\"><center>Diplomado en Inteligencia Artificial y Aprendizaje Profundo</center></span>" ] }, { "cell_type": "markdown", "id": "scenic-ghost", "metadata": {}, "source": [ "# <span style=\"color:red\"><center>Introducción a la API Sequential de Keras</center></span>" ] }, { "cell_type": "markdown", "id": "durable-renewal", "metadata": {}, "source": [ "## <span style=\"color:blue\">Profesores</span>" ] }, { "cell_type": "markdown", "id": "funded-football", "metadata": {}, "source": [ "1. Alvaro Mauricio Montenegro Díaz, ammontenegrod@unal.edu.co\n", "2. Daniel Mauricio Montenegro Reyes, dextronomo@gmail.com \n", "3. Campo Elías Pardo Turriago, cepardot@unal.edu.co " ] }, { "cell_type": "markdown", "id": "young-active", "metadata": {}, "source": [ "## <span style=\"color:blue\">Asesora Medios y Marketing digital</span>\n", " " ] }, { "cell_type": "markdown", "id": "suspected-campus", "metadata": {}, "source": [ "4. Maria del Pilar Montenegro, pmontenegro88@gmail.com " ] }, { "cell_type": "markdown", "id": "critical-guess", "metadata": {}, "source": [ "## <span style=\"color:blue\">Asistentes</span>" ] }, { "cell_type": "markdown", "id": "romantic-bookmark", "metadata": {}, "source": [ "5. Oleg Jarma, ojarmam@unal.edu.co \n", "6. Laura Lizarazo, ljlizarazore@unal.edu.co " ] }, { "cell_type": "markdown", "id": "restricted-going", "metadata": {}, "source": [ "## <span style=\"color:blue\">Contenido</span> " ] }, { "cell_type": "markdown", "id": "assisted-thunder", "metadata": {}, "source": [ "* [Introducción](#Introducción)\n", "* [Prepara datos de MNIST](#Prepara-datos-de-MNIST)\n", "* [Modelo Sequential de Keras](#Modelo-Sequential-de-Keras)\n", "* [Summary y Plot Model](#Summary-y-Plot-Model)\n", "* [Entrenamiento y evaluación del modelo](#Entrenamiento-y-evaluación-del-modelo)\n" ] }, { "cell_type": "markdown", "id": "incident-soundtrack", "metadata": {}, "source": [ "## <span style=\"color:blue\">Introducción</span>" ] }, { "cell_type": "markdown", "id": "clean-olive", "metadata": {}, "source": [ "Este es un notebook de Google Colaboratory. Los programas de Python se executan directamente en tu navegador, una gran manera de aprender y utilizar TensorFlow. Para poder seguir este tutorial, ejecuta este notebook en Google Colab presionando el boton en la parte superior de esta pagina.\n" ] }, { "cell_type": "code", "execution_count": 1, "id": "criminal-excuse", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Version de Tensorflow = 2.4.1\n" ] } ], "source": [ "from __future__ import absolute_import, division, print_function\n", "\n", "import tensorflow as tf\n", "print('Version de Tensorflow = ', tf.__version__)" ] }, { "cell_type": "markdown", "id": "accepted-product", "metadata": {}, "source": [ "## <span style=\"color:blue\">Prepara datos de MNIST</span> " ] }, { "cell_type": "code", "execution_count": 2, "id": "fleet-boating", "metadata": {}, "outputs": [], "source": [ "mnist = tf.keras.datasets.mnist\n", "\n", "(x_train, y_train), (x_test, y_test) = mnist.load_data()\n", "x_train, x_test = x_train/255.0, x_test/255.0" ] }, { "cell_type": "markdown", "id": "backed-albany", "metadata": {}, "source": [ "## <span style=\"color:blue\">Modelo Sequential de Keras</span> \n" ] }, { "cell_type": "code", "execution_count": 3, "id": "underlying-powell", "metadata": {}, "outputs": [], "source": [ "import tensorflow.keras.layers as layer\n", "\n", "model = tf.keras.models.Sequential([\n", " layer.Flatten(input_shape=(28,28)), #784\n", " layer.Dense(128, activation='relu'),\n", " layer.Dropout(0.2),\n", " layer.Dense(10, activation='softmax')\n", "])\n", "\n", "model.compile(optimizer='adam',\n", " loss='sparse_categorical_crossentropy',\n", " metrics=['accuracy'])" ] }, { "cell_type": "markdown", "id": "loose-industry", "metadata": {}, "source": [ "## <span style=\"color:blue\">Summary y Plot Model</span> " ] }, { "cell_type": "code", "execution_count": 4, "id": "confirmed-martial", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential\"\n", "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "flatten (Flatten) (None, 784) 0 \n", "_________________________________________________________________\n", "dense (Dense) (None, 128) 100480 \n", "_________________________________________________________________\n", "dropout (Dropout) (None, 128) 0 \n", "_________________________________________________________________\n", "dense_1 (Dense) (None, 10) 1290 \n", "=================================================================\n", "Total params: 101,770\n", "Trainable params: 101,770\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] } ], "source": [ "model.summary()" ] }, { "cell_type": "code", "execution_count": 5, "id": "urban-nation", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<IPython.core.display.Image object>" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from tensorflow.keras.utils import plot_model\n", "\n", "plot_model(model, to_file='../Imagenes/mnist_dense.png', \n", " show_shapes=True, show_dtype=False)" ] }, { "cell_type": "markdown", "id": "emerging-europe", "metadata": {}, "source": [ "Puede necesitar instalar [graphviz](https://www.graphviz.org/)." ] }, { "cell_type": "raw", "id": "explicit-montreal", "metadata": {}, "source": [ "pip install pydot\n", "pip install pydot_ng\n", "pip install graphviz\n", "#pip install plot-model" ] }, { "cell_type": "code", "execution_count": null, "id": "fantastic-subscriber", "metadata": {}, "outputs": [], "source": [ "#from plot_model import plot_model\n", "#plot_model(model)" ] }, { "cell_type": "markdown", "id": "considerable-action", "metadata": {}, "source": [ "## <span style=\"color:blue\">Entrenamiento y evaluación del modelo</span> " ] }, { "cell_type": "code", "execution_count": 6, "id": "creative-college", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/5\n", "1875/1875 [==============================] - 20s 10ms/step - loss: 0.4859 - accuracy: 0.8617\n", "Epoch 2/5\n", "1875/1875 [==============================] - 21s 11ms/step - loss: 0.1453 - accuracy: 0.9564\n", "Epoch 3/5\n", "1875/1875 [==============================] - 18s 10ms/step - loss: 0.1066 - accuracy: 0.9675\n", "Epoch 4/5\n", "1875/1875 [==============================] - 19s 10ms/step - loss: 0.0904 - accuracy: 0.9714\n", "Epoch 5/5\n", "1875/1875 [==============================] - 18s 10ms/step - loss: 0.0750 - accuracy: 0.9771\n" ] } ], "source": [ "history = model.fit(x_train, y_train, epochs=5)" ] }, { "cell_type": "code", "execution_count": 7, "id": "prompt-gates", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "313/313 - 2s - loss: 0.0738 - accuracy: 0.9786\n" ] }, { "data": { "text/plain": [ "[0.07382926344871521, 0.978600025177002]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.evaluate(x_test, y_test, verbose=2)" ] }, { "cell_type": "markdown", "id": "institutional-basin", "metadata": {}, "source": [ "## <span style=\"color:blue\">Primeros gráficos</span> " ] }, { "cell_type": "markdown", "id": "executed-singapore", "metadata": {}, "source": [ "### Extrae datos" ] }, { "cell_type": "code", "execution_count": 20, "id": "commercial-envelope", "metadata": {}, "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>loss</th>\n", " <th>accuracy</th>\n", " <th>epoch</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>0.293235</td>\n", " <td>0.916267</td>\n", " <td>0</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>0.140098</td>\n", " <td>0.958250</td>\n", " <td>1</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>0.105634</td>\n", " <td>0.968300</td>\n", " <td>2</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>0.088549</td>\n", " <td>0.972383</td>\n", " <td>3</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>0.076502</td>\n", " <td>0.976267</td>\n", " <td>4</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " loss accuracy epoch\n", "0 0.293235 0.916267 0\n", "1 0.140098 0.958250 1\n", "2 0.105634 0.968300 2\n", "3 0.088549 0.972383 3\n", "4 0.076502 0.976267 4" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "hist = pd.DataFrame(history.history)\n", "hist['epoch'] = history.epoch \n", "hist" ] }, { "cell_type": "markdown", "id": "flying-jewelry", "metadata": {}, "source": [ "### Pérdida" ] }, { "cell_type": "code", "execution_count": 27, "id": "parliamentary-cancellation", "metadata": {}, "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": [ "\n", "plt.figure()\n", "plt.xlabel('Epoca')\n", "plt.ylabel('Loss: Entropía cruzada')\n", "plt.plot(hist['epoch'], hist['loss'],\n", " label='Error en entrenamiento')\n", "plt.ylim([0,0.5])\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "pediatric-increase", "metadata": {}, "source": [ "### Exactitud" ] }, { "cell_type": "code", "execution_count": 29, "id": "processed-accreditation", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEKCAYAAAAIO8L1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAlxUlEQVR4nO3de3RV9Z338feXcEmIkAAJFggQVORquBgioEXQx3oZRetYAWu9a3WUap+nY9VZ1dax69HW2tqxowuVQUdFqlZlOnTqo5VSRYWgiHIHQY1gSUASLgnk8n3+ODvxcLJDTiAnJ5fPa62zOHv/9j7nm1/C/p7fb3/P3ubuiIiIxOqU7ABERKR1UoIQEZFQShAiIhJKCUJEREIpQYiISCglCBERCZWwBGFmc81sh5l93EC7mdlvzWyTma0ys/FRbeeY2fqg7Y5ExSgiIg1L5AhiHnDOYdrPBYYGjxuARwHMLAX4XdA+EphlZiMTGKeIiIRIWIJw9yXArsNsciHwtEe8C2SaWT+gANjk7p+4+0Hg+WBbERFpQZ2T+N4DgM+jlouCdWHrT2noRczsBiIjENLT008ePnx480cqItJOrVixosTds8PakpkgLGSdH2Z9KHefA8wByM/P98LCwuaJTkSkAzCzTxtqS2aCKAIGRi3nANuArg2sFxGRFpTMMteFwBVBNdNEoNTdtwPLgaFmNsTMugIzg21FRKQFJWwEYWbzgalAlpkVAfcAXQDc/TFgEXAesAnYD1wdtFWZ2S3An4EUYK67r05UnCIiEi5hCcLdZzXS7sDNDbQtIpJARFqdyspKioqKqKioSHYoInFLTU0lJyeHLl26xL1PMs9BiLRJRUVF9OjRg9zcXMzCaipEWhd3Z+fOnRQVFTFkyJC499OlNkSaqKKigj59+ig5SJthZvTp06fJo14lCJEjoOQgbc2R/M0qQYiISCglCJE2KCUlhbFjx9Y97r///mZ77ZUrV7Jo0dc1IgsXLqx7/VdeeYU1a9Y0+TWnTp1Ka/gS67x589i2rfV8reruu+/m9ddfP6J9Y39PiaCT1CJtUFpaGitXrkzIa69cuZLCwkLOO+88AKZPn8706dOBSII4//zzGTmybV4/c968eYwePZr+/fvXa6uuriYlJaVF47n33nuPeN/Y31MiaAQh0k6UlpYybNgw1q9fD8CsWbN4/PHHAbjpppvIz89n1KhR3HPPPXX7LF++nMmTJzNmzBgKCgooLS3l7rvvZsGCBYwdO5YFCxYwb948brnlFpYuXcrChQv553/+Z8aOHcvmzZsPGRmUlJSQm5sLQHl5OTNnziQvL48ZM2ZQXl4eGvOKFSs4/fTTOfnkkzn77LPZvn07EBlx/PjHP6agoIATTzyRv/3tb6H7//KXv2TChAnk5eXV/Vxbt25lxIgRXH/99YwaNYpvfetblJeX8+KLL1JYWMh3v/tdxo4dS3l5Obm5udx7772cdtppvPDCC7z22mtMmjSJ8ePH853vfIe9e/cCkJubyz333MP48eM56aSTWLduHQDLli1j8uTJjBs3jsmTJ9f1/bx587jooou44IILGDJkCI888ggPPfQQ48aNY+LEiezaFbmO6VVXXcWLL77Y5L44ePBgvd/Trl27uOiii8jLy2PixImsWrWqqX9C9WgEIXIUfvZfq1mzraxZX3Nk/57cc8Gow25TXl7O2LFj65bvvPNOZsyYwSOPPMJVV13FrbfeyldffcX1118PwM9//nN69+5NdXU1Z555JqtWrWL48OHMmDGDBQsWMGHCBMrKyujevTv33nsvhYWFPPLII0DkYAcwefJkpk+fzvnnn88ll1xy2PgeffRRunfvzqpVq1i1ahXjx4+vt01lZSWzZ8/m1VdfJTs7mwULFvAv//IvzJ07F4CqqiqWLVvGokWL+NnPflZvKua1115j48aNLFu2DHdn+vTpLFmyhEGDBrFx40bmz5/P448/zqWXXspLL73E5ZdfziOPPMKDDz5Ifn5+3eukpqby1ltvUVJSwsUXX8zrr79Oeno6DzzwAA899BB33303AFlZWbz//vv8+7//Ow8++CBPPPEEw4cPZ8mSJXTu3JnXX3+du+66i5deegmAjz/+mA8++ICKigpOOOEEHnjgAT744AN++MMf8vTTT3PbbbcdVV/E/p5mz57NuHHjeOWVV/jLX/7CFVdccdSjTCUIkTaooSmms846ixdeeIGbb76ZDz/8sG7973//e+bMmUNVVRXbt29nzZo1mBn9+vVjwoQJAPTs2bPZ4luyZAk/+MEPAMjLyyMvL6/eNuvXr+fjjz/mrLPOAiJTPP369atrv/jiiwE4+eST2bp1a739X3vtNV577TXGjRsHwN69e9m4cSODBg1iyJAhdQm0of1rzZgx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\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "\n", "plt.figure()\n", "plt.xlabel('Epoca')\n", "plt.ylabel('Exactitud')\n", "plt.plot(hist['epoch'], hist['accuracy'],\n", " label='Exactitud en entrenamiento')\n", "plt.ylim([0.9,1])\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "id": "better-brazil", "metadata": {}, "outputs": [], "source": [] } ], "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.8" } }, "nbformat": 4, "nbformat_minor": 5 }