{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" } }, "cells": [ { "cell_type": "markdown", "source": [ "1. Importamos las librerías" ], "metadata": { "id": "kMPNAVm7B7kn" } }, { "cell_type": "code", "metadata": { "id": "Hy_pAhzDZ4gy" }, "source": [ "import tensorflow as tf\n", "import numpy as np" ], "execution_count": 1, "outputs": [] }, { "cell_type": "markdown", "source": [ "2. Vamos a escribir nuestras listas de datos. Es decir, 2 arrays: uno para Celsius y otro para Fahrenheit. Serán los datos con los que aprenderá." ], "metadata": { "id": "UEjv3xguBzW4" } }, { "cell_type": "code", "metadata": { "id": "MIrfX72vaL1z" }, "source": [ "celsius = np.array([-40, -10, 0, 8, 15, 22, 38], dtype=float)\n", "fahrenheit = np.array([-40, 14, 32, 46, 59, 72, 100], dtype=float)" ], "execution_count": 2, "outputs": [] }, { "cell_type": "markdown", "source": [ "3. Diseñamos la red neuronal: Especifico la capa de entrada y de salida" ], "metadata": { "id": "GdG3DR-tfzur" } }, { "cell_type": "code", "metadata": { "id": "RIG6Y5jEafFL" }, "source": [ "# Definir el modelo\n", "modelo = tf.keras.Sequential([\n", " tf.keras.layers.Input(shape=[1]), # Se especifica la entrada con Input\n", " tf.keras.layers.Dense(units=1) # Capa densa de salida\n", "])\n", "\n" ], "execution_count": 3, "outputs": [] }, { "cell_type": "markdown", "source": [ "4. Compilamos el modelo con dos características: el optimizador secuencial y la función de pérdida" ], "metadata": { "id": "ilCho2C1ix8x" } }, { "cell_type": "code", "metadata": { "id": "1_WHzWidbN_8" }, "source": [ "modelo.compile(\n", " optimizer=tf.keras.optimizers.Adam(0.1),\n", " loss='mean_squared_error'\n", ")" ], "execution_count": 4, "outputs": [] }, { "cell_type": "markdown", "source": [ "5. Entrenamiento" ], "metadata": { "id": "N5N29ZXrjQxX" } }, { "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "4D-NuUTnbabR", "outputId": "019a22c7-cfb1-48a7-a47b-b11e9bc16e08" }, "source": [ "print(\"Comenzando entrenamiento...\")\n", "historial = modelo.fit(celsius, fahrenheit, epochs=1000,verbose=False)\n", "print(\"Modelo entrenado!\")" ], "execution_count": 6, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Comenzando entrenamiento...\n", "Modelo entrenado!\n" ] } ] }, { "cell_type": "markdown", "source": [ "6. Antes de predecir vamos a hacer que nos muestre de forma gráfica los resultados de la función de pérdida" ], "metadata": { "id": "ZKX4Fp3Vlq6f" } }, { "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 467 }, "id": "px43cF3Nb3mG", "outputId": "c8b821ac-d3cd-4920-a81a-034ad7d79717" }, "source": [ "import matplotlib.pyplot as plt\n", "plt.xlabel(\"# Epoca\")\n", "plt.ylabel(\"Magnitud de pérdida\")\n", "plt.plot(historial.history[\"loss\"])" ], "execution_count": 7, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "[]" ] }, "metadata": {}, "execution_count": 7 }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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52P+/PkdftYWatqEhITgVpnt7rvvvmWb3ibQyxkFFzUovtTAAERERNRNZt0CW758OZ577jlkZ2cb9mVnZ2PBggVYsWKFxYqj64Jab4OVXO5a7xoRERG1Z1YP0OOPP46GhgbExsbCwaHlEM3NzXBwcMATTzyBJ554wtC2urraMpXaubZxQCXVHAhNRETUXWYFoI4eQEo9qy0AFVezB4iIiKi7zApAc+bMsXQddAuBhrWAGICIiIi6y6wxQGR9QTf0AN1uA7yJiIisjQGolwjwdIJEAjRodaiu14pdDhERUa/GANRLKBxk8HVTAgBKuCI0ERFRtzAA9SJBHAhNRERkEd0KQD/99BN27dqFq1dbeiQ4NqVn9fdqGQhdwgBERETULWYFoEuXLiE+Ph533HEHHnjgAZSVlQEA5s6dixdffNGiBdJ1hsUQGYCIiIi6xawA9MILL8DBwQHFxcVwdnY27J8xYwbS09MtVhwZC/TkatBERESWYNY6QN999x127dqF/v37G+0fMmQIfv31V4sURu1xNWgiIiLLMKsHqL6+3qjnp011dTUUCkW3i6KOtd0CK625imadXuRqiIiIei+zAtD48ePxr3/9y/BeIpFAr9fj7bffxj333GOx4siYj5sCCgcpdHoBF2uuiV0OERFRr2XWLbC3334bkyZNQnZ2NrRaLV5++WUUFBSguroahw4dsnSN1EoqlSC4jzPOlF/B+Uv1COrTvheOiIiIbs2sHqCwsDCcOXMG48aNw9SpU1FfX4+HH34YeXl5GDRokKVrpBuE9HEBAPx6qV7kSoiIiHovs3qAAMDd3R1/+ctfLFkLmSDEuyUAna9iACIiIjKXyQHo+PHjJh80PDzcrGLo1q73AHEqPBERkblMDkCRkZGQSCQQBAESicSwv2315xv36XQ6C5ZINwppHffzC3uAiIiIzGbyGKDz58/j3LlzOH/+PL744gsMGDAAH3zwAfLz85Gfn48PPvgAgwYNwhdffNGT9dq9tltgJZcbOBWeiIjITCb3AAUHBxte/+53v8N7772HBx54wLAvPDwcgYGBWLx4MRITEy1aJF3np1JC4SBFY7MeF2uucSYYERGRGcyaBXbixAkMGDCg3f4BAwagsLCw20VR59qmwgPAL5wJRkREZBazAtDw4cORmpoKrVZr2KfVapGamorhw4dbrDjqWHDrQGgG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\n" }, "metadata": {} } ] }, { "cell_type": "markdown", "source": [ "7. Comprobemos el modelo. Hagamos una predicción" ], "metadata": { "id": "U98VUvOVm3Z_" } }, { "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "esVvhzjMcV9f", "outputId": "279562a5-aff4-4921-8b5d-7c0974f75558" }, "source": [ "# Hacer una predicción\n", "print(\"Hagamos una predicción!\")\n", "\n", "# Asegúrate de pasar un array bidimensional (1, 1)\n", "resultado = modelo.predict(np.array([[100.0]])) # Aseguramos que sea un array 2D\n", "print(\"El resultado es \" + str(resultado[0][0]) + \" fahrenheit!\")" ], "execution_count": 8, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Hagamos una predicción!\n", "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 36ms/step\n", "El resultado es 211.74742 fahrenheit!\n" ] } ] }, { "cell_type": "markdown", "source": [ "8. Imprime las variables internas del modelo: peso y sesgo de nuestra red de 2 neuronas" ], "metadata": { "id": "FfSgZVP_oHXE" } }, { "cell_type": "code", "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "FVDejrBgcokc", "outputId": "7756a7c6-4484-4ca3-f419-4326f8193521" }, "source": [ "# 8. Imprimir los pesos y el sesgo\n", "print(\"Variables internas del modelo:\")\n", "# Verifica qué capas están en el modelo\n", "for idx, capa in enumerate(modelo.layers):\n", " print(f\"Capa {idx}: {capa}\")\n", "\n", "# Accedemos a la capa densa, que es la capa 0\n", "capa = modelo.layers[0] # Aquí cambiamos para acceder a la capa en el índice 0\n", "pesos, sesgo = capa.get_weights() # Obtenemos los pesos y el sesgo\n", "print(f\"Pesos: {pesos}\")\n", "print(f\"Sesgo: {sesgo}\")\n" ], "execution_count": 15, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Variables internas del modelo:\n", "Capa 0: \n", "Pesos: [[1.7979496]]\n", "Sesgo: [31.952475]\n" ] } ] } ] }