Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save donpandix/2b125f863c7f678249ac5a865b2892fc to your computer and use it in GitHub Desktop.
Save donpandix/2b125f863c7f678249ac5a865b2892fc to your computer and use it in GitHub Desktop.
formula-conversi-n-calcius-a-fahrenheit.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"gpuType": "T4",
"collapsed_sections": [
"aXRYDX38xJ4x"
],
"toc_visible": true,
"authorship_tag": "ABX9TyNnKkA9827IuFV6CYyH8uIF",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
},
"accelerator": "GPU"
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/donpandix/2b125f863c7f678249ac5a865b2892fc/formula-conversi-n-calcius-a-fahrenheit.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"source": [
"# Definición de los parámetros para el cálculo del modelo\n"
],
"metadata": {
"id": "9t36WsQ5tKri"
}
},
{
"cell_type": "markdown",
"source": [
"Importa las librerías necesarias\n",
"* **TensorFlow** como librería principal de ejecución\n",
"* **Numpy** para facilitar el trabajo con arreglos"
],
"metadata": {
"id": "chIbQHVvwY4l"
}
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"id": "aIXY_bDLaLm4"
},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"source": [
"#Datos de entrenamiento\n",
"celcius = np.array([-40, -10, 0 ,8 ,15, 22, 38], dtype=float)\n",
"fahrenheit = np.array([-40, 14, 32, 46, 59, 72, 100], dtype=float)"
],
"metadata": {
"id": "HTcdGHHUayGP"
},
"execution_count": 10,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"Configura tres capas, dos de cálculo y uno de salida, las capas tiene 3 neuronas"
],
"metadata": {
"id": "bhuTNr74uRyX"
}
},
{
"cell_type": "code",
"source": [
"#Una red neuronal con solo una capa y una neurona\n",
"#capa = tf.keras.layers.Dense(units=1, input_shape=[1])\n",
"#modelo = tf.keras.Sequential([capa])\n",
"\n",
"#Una red con dos capas y 3 neuronas\n",
"oculta1 = tf.keras.layers.Dense(units=3, input_shape=[1])\n",
"oculta2 = tf.keras.layers.Dense(units=3)\n",
"salida = tf.keras.layers.Dense(units=1)\n",
"\n",
"modelo = tf.keras.Sequential([oculta1, oculta2, salida])"
],
"metadata": {
"id": "YUxsTCihbvU_"
},
"execution_count": 11,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"Se especifica como debe ejecutar el cálculo con los valores de entrada y salida para la definición de la fórmula final"
],
"metadata": {
"id": "8ckfnJ3kunTG"
}
},
{
"cell_type": "code",
"source": [
"#Especificación de como el modelo calculará la formula lineal\n",
"modelo.compile(\n",
" optimizer=tf.keras.optimizers.Adam(0.1),\n",
" loss='mean_squared_error'\n",
")"
],
"metadata": {
"id": "aCC7mlHvcLKU"
},
"execution_count": 12,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"# Entrenamiento y obtención del modelo"
],
"metadata": {
"id": "nAVo7-7NwD3d"
}
},
{
"cell_type": "markdown",
"source": [
"Entrenamiento , epochs define el número de iteraciones y verbose si imprime el resultado"
],
"metadata": {
"id": "nrA5YWDPvES7"
}
},
{
"cell_type": "code",
"source": [
"#Proceso de entrenamiento\n",
"print('inicio del entrenamiento')\n",
"historial = modelo.fit(celcius, fahrenheit, epochs=100, verbose=False)\n",
"print('Model entrenado')"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "fzF42hJ6cl1A",
"outputId": "730077cb-d395-4ee1-c472-d72acede37b9"
},
"execution_count": 13,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"inicio del entrenamiento\n",
"Model entrenado\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"## Grafica de la pérdida (para analizar las iteraciones)\n",
"import matplotlib.pyplot as plt\n",
"plt.xlabel(\"# Epoca\")\n",
"plt.xlabel(\"Magnitud de pérdida\")\n",
"plt.plot(historial.history['loss'])"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 467
},
"id": "O6hMjUuLenFH",
"outputId": "2b9ef9bc-5599-421c-dc5d-6068c417bf14"
},
"execution_count": 14,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7857da1a4130>]"
]
},
"metadata": {},
"execution_count": 14
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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b2+MGjWq1rURYKrhwgsvNFJTUz2/O51OIzEx0Zg+fXoAq2p4Dhw4YEgyli1bZhiGYeTk5BghISHGJ5984mmzbds2Q5KxcuXKQJUZ1PLy8ozzzz/fWLhwofG73/3OE2C41r4zefJk45JLLjntfpfLZcTHxxvPPvusZ1tOTo5ht9uNjz76yB8lNhjDhw83brvtNq9t1157rTF69GjDMLjWvnJigKnKdd26dashyVi7dq2nzddff22YTCbjt99+q1U93EKqotLSUqWnp2vw4MGebWazWYMHD9bKlSsDWFnDk5ubK0lq0qSJJCk9PV1lZWVe175jx45q1aoV176GUlNTNXz4cK9rKnGtfenzzz9X3759dd111yk2Nla9evXSm2++6dm/a9cuZWVleV3r6Oho9e/fn2tdTRdddJEWLVqkH3/8UZK0YcMGrVixQsOGDZPEta4rVbmuK1euVExMjPr27etpM3jwYJnNZq1evbpW799gH+boa4cOHZLT6VRcXJzX9ri4OG3fvj1AVTU8LpdLEydO1MUXX6yuXbtKkrKysmSz2RQTE+PVNi4uTllZWQGoMrjNnDlTP/zwg9auXXvSPq617/z888967bXXNGnSJP35z3/W2rVr9cc//lE2m01jx471XM9T/ZvCta6ehx9+WA6HQx07dpTFYpHT6dRTTz2l0aNHSxLXuo5U5bpmZWUpNjbWa7/ValWTJk1qfe0JMKhXUlNTtXnzZq1YsSLQpTRIe/fu1X333aeFCxcqNDQ00OU0aC6XS3379tXf/vY3SVKvXr20efNmvf766xo7dmyAq2tYZs2apRkzZujDDz9Uly5dlJGRoYkTJyoxMZFr3YBxC6mKmjVrJovFctJsjOzsbMXHxweoqoZlwoQJmjt3rpYsWaKWLVt6tsfHx6u0tFQ5OTle7bn21Zeenq4DBw6od+/eslqtslqtWrZsmV5++WVZrVbFxcVxrX0kISFBnTt39trWqVMn7dmzR5I815N/U2rvwQcf1MMPP6wbb7xR3bp10y233KL7779f06dPl8S1ritVua7x8fE6cOCA1/7y8nIdOXKk1teeAFNFNptNffr00aJFizzbXC6XFi1apOTk5ABWFvwMw9CECRP06aefavHixWrbtq3X/j59+igkJMTr2mdmZmrPnj1c+2oaNGiQNm3apIyMDM+rb9++Gj16tOdnrrVvXHzxxSctB/Djjz+qdevWkqS2bdsqPj7e61o7HA6tXr2aa11NhYWFMpu9v84sFotcLpckrnVdqcp1TU5OVk5OjtLT0z1tFi9eLJfLpf79+9eugFoNAT7HzJw507Db7UZaWpqxdetW48477zRiYmKMrKysQJcW1O6++24jOjraWLp0qbF//37Pq7Cw0NPmrrvuMlq1amUsXrzYWLdunZGcnGwkJycHsOqG4/hZSIbBtfaVNWvWGFar1XjqqaeMHTt2GDNmzDDCw8ONDz74wNPm6aefNmJiYozPPvvM2Lhxo3H11VcztbcGxo4da7Ro0cIzjXr27NlGs2bNjIceesjThmtdM3l5ecb69euN9evXG5KMF154wVi/fr3xyy+/GIZRtes6dOhQo1evXsbq1auNFStWGOeffz7TqAPhlVdeMVq1amXYbDbjwgsvNFatWhXokoKepFO+3nnnHU+boqIi45577jEaN25shIeHG9dcc42xf//+wBXdgJwYYLjWvvPFF18YXbt2Nex2u9GxY0fjjTfe8NrvcrmMv/zlL0ZcXJxht9uNQYMGGZmZmQGqNng5HA7jvvvuM1q1amWEhoYa7dq1Mx599FGjpKTE04ZrXTNLliw55b/PY8eONQyjatf18OHDxqhRo4yIiAgjKirKGDdunJGXl1fr2kyGcdxShQAAAEGAMTAAACDoEGAAAEDQIcAAAICgQ4ABAABBhwADAACCDgEGAAAEHQIMAAAIOgQYAKihOXPm6KOPPgp0GcA5iQADoNqmTp2qnj171sm509LSFBMTU61jdu/eLZPJpIyMjDqp6VRWrVqlP/7xjzV+ls6J1/DWW2/ViBEjznjMZZddpokTJ9bo/YCGhgAD1GO33nqrTCaT7rrrrpP2paamymQy6dZbb/V7XQ888IDXA9yq8uXbkBw+fFjjx4/XnDlz1KZNG5+c86WXXlJaWppPzgWcCwgwQD2XlJSkmTNnqqioyLOtuLhYH374oVq1ahWQmiIiItS0adOAvHd90LRpU23ZskW9e/c+a9uysrIqnTM6OrraPU/AuYwAA9RzvXv3VlJSkmbPnu3ZNnv2bLVq1Uq9evXyajtv3jxdcskliomJUdOmTXXllVdq586dXm2+//579ezZU6Ghoerbt6/mzJnjdftl6dKlMplMWrRokfr27avw8HBddNFFyszM9Jzj+NsfU6dO1bvvvqvPPvtMJpNJJpNJS5cu9ZwnJyfHc1xGRoZMJpN2797t2ZaWlqZWrVopPDxc11xzjQ4fPnzWa7JmzRr16tXL8xnWr19/UpvNmzdr2LBhioiIUFxcnG655RYdOnTotOd037qaM2eOzj//fIWGhiolJUV79+71avfZZ5+pd+/eCg0NVbt27fTEE0+ovLzcs99kMum1117TH/7wBzVq1EhPPfWUJOnpp59WXFycIiMjNX78eBUXF3ud98RerIKCAo0ZM0YRERFKSEjQ888/f1LN77//vvr27avIyEjFx8frpptu0oEDB856/YCGgAADBIHbbrtN77zzjuf3t99+W+PGjTupXUFBgSZNmqR169Zp0aJFMpvNuuaaa+RyuSRJDodDV111lbp166YffvhB06ZN0+TJk0/5no8++qief/55rVu3TlarVbfddtsp2z3wwAO6/vrrNXToUO3fv1/79+/XRRddVKXPtXr1ao0fP14TJkxQRkaGLr/8cv31r3894zH5+fm68sor1blzZ6Wnp2vq1Kl64IEHvNrk5OTo97//vXr16qV169Zp3rx5ys7O1vXXX3/GcxcWFuqpp57Se++9p++++045OTm68cYbPfu//fZbjRkzRvfdd5+2bt2qf//730pLS/OEFLepU6fqmmuu0aZNm3Tbbbdp1qxZmjp1qv72t79p3bp1SkhI0L/+9a8z1vLggw9q2bJl+uyzz7RgwQItXbpUP/zwg1ebsrIyTZs2TRs2bNCcOXO0e/fugNxSBAKi1s+zBlBnxo4da1x99dXGgQMHDLvdbuzevdvYvXu3ERoaahw8eNC4+uqrPY+1P5WDBw8akoxNmzYZhmEYr732mtG0aVOjqKjI0+bNN980JBnr1683DMMwlixZYkgyvvnmG0+bL7/80pDkOe7xxx83evTocVKdx3Of5+jRo55t69evNyQZu3btMgzDMEaNGmVcccUVXsfdcMMNRnR09Gk/07///e+TPsNrr73m9RmmTZtmDBkyxOu4vXv3GpKMzMzMU573nXfeMSQZq1at8mzbtm2bIclYvXq1YRiGMWjQIONvf/ub13Hvv/++kZCQ4PldkjFx4kSvNsnJycY999zjta1///6nvYZ5eXmGzWYzZs2a5dl/+PBhIywszLjvvvtOWb9hGMbatWsNSUZeXt5p2wANBT0wQBBo3ry5hg8frrS0NL3zzjsaPny4mjVrdlK7HTt2aNSoUWrXrp2ioqI8A0z37NkjScrMzFT37t0VGhrqOebCCy885Xt2797d83NCQoIk+fz2xLZt29S/f3+vbWeb1bNt27aTPsOJx2zYsEFLlixRRESE59WxY0dJOumW2vGsVqv69evn+b1jx46KiYnRtm3bPOd98sknvc57xx13aP/+/SosLPQc17dv31p9zp07d6q0tNTrmCZNmqhDhw5e7dLT03XVVVepVatWioyM1O9+9ztJlX/fQENmDXQBAKrmtttu04QJEyRJr7766inbXHXVVWrdurXefPNNJSYmyuVyqWvXriotLa32+4WEhHh+NplMkuS5FVUVZnPF/z8yDMOzraoDWmsrPz9fV111lf7+97+ftM8dxmp63ieeeELXXnvtSfuOD1SNGjWq8XtUVUFBgVJSUpSSkqIZM2aoefPm2rNnj1JSUmr09w0EG3pggCAxdOhQlZaWqqysTCkpKSftP3z4sDIzM/XYY49p0KBB6tSpk44ePerVpkOHDtq0aZNKSko829auXVvr2mw2m5xOp9e25s2bS5L279/v2XbiOi2dOnXS6tWrvbatWrXqjO/VqVMnbdy40WsQ7InH9O7dW1u2bFGbNm3Uvn17r9eZwkV5ebnWrVvn+T0zM1M5OTnq1KmT57yZmZknnbN9+/aewHa6mqvzOc877zyFhIR4HXP06FH9+OOPnt+3b9+uw4cP6+mnn9all16qjh07MoAX5xQCDBAkLBaLtm3bpq1bt8pisZy0v3HjxmratKneeOMN/fTTT1q8eLEmTZrk1eamm26Sy+XSnXfeqW3btmn+/Pl67rnnJFX2stREmzZttHHjRmVmZurQoUMqKytT+/btlZSUpKlTp2rHjh368ssvT5pJ88c//lHz5s3Tc889px07duif//yn5s2bd8b3uummm2QymXTHHXdo69at+uqrrzyfwS01NVVHjhzRqFGjtHbtWu3cuVPz58/XuHHjTgpaxwsJCdG9996r1atXKz09XbfeeqsGDBjguc02ZcoUvffee3riiSe0ZcsWbdu2TTNnztRjjz12xprvu+8+vf3223rnnXf0448/6vHHH9eWLVtO2z4iIkLjx4/Xgw8+qMWLF2vz5s269dZbvUJSq1atZLPZ9Morr+jnn3/W559/rmnTpp2xDqAhIcAAQSQqKkpRUVGn3Gc2mzVz5kylp6era9euuv/++/Xss8+edPwXX3yhjIwM9ezZU48++qimTJkiyfsWSHXdcccd6tChg/r27avmzZvru+++U0hIiD766CNt375d3bt319///veTZhgNGDBAb775pl566SX16NFDCxYsOGsYiIiI0BdffKFNmzapV69eevTRR0+6VZSYmKjvvvtOTqdTQ4YMUbdu3TRx4kTFxMScsackPDxckydP1k033aSLL75YERER+vjjjz37U1JSNHfuXC1YsED9+vXTgAED9OKLL6p169ZnrPmGG27QX/7yFz300EPq06ePfvnlF919991nPObZZ5/VpZdeqquuukqDBw/WJZdcoj59+nj2N2/eXGlpafrkk0/UuXNnPf300ycFOaAhMxnH36AGcM6ZMWOGxo0bp9zcXIWFhQW6nIBJS0vTxIkTvdatAVB/MYgXOMe89957ateunVq0aKENGzZo8uTJuv7668/p8AIg+BBggHNMVlaWpkyZoqysLCUkJOi66647aSE2AKjvuIUEAACCDoN4AQBA0CHAAACAoEOAAQAAQYcAAwAAgg4BBgAABB0CDAAACDoEGAAAEHQIMAAAIOgQYAAAQND5/9cQISZXi0x+AAAAAElFTkSuQmCC\n"
},
"metadata": {}
}
]
},
{
"cell_type": "markdown",
"source": [
"Ejecución de un cálculo para revisar el resultado\n",
"100 C = 212 F"
],
"metadata": {
"id": "4qr4LoAEvTyp"
}
},
{
"cell_type": "code",
"source": [
"#Ejecución del cálculo con el entrenamiento\n",
"print('Realizando una predicción')\n",
"resultado = modelo.predict([100.0])\n",
"print(\"El resultado es \" + str(resultado) + \" fahrenheit!\")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "jctbp6zGffTC",
"outputId": "39af72a4-a27d-4f9a-f317-040b8df03709"
},
"execution_count": 15,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Realizando una predicción\n",
"1/1 [==============================] - 0s 71ms/step\n",
"El resultado es [[212.15399]] fahrenheit!\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"# Revisión de los valores asignados al modelo"
],
"metadata": {
"id": "aXRYDX38xJ4x"
}
},
{
"cell_type": "code",
"source": [
"#Imprime las variables de la formula lineal\n",
"print(\"Variables internas del modelo\")\n",
"\n",
"#Red de una neurona y una capa\n",
"#print(capa.get_weights())\n",
"\n",
"#Red con 2 capas y 3 neuronas por capa\n",
"print(oculta1.get_weights())\n",
"print(oculta2.get_weights())\n",
"print(salida.get_weights())"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "_W4sG2dmgGce",
"outputId": "92723f37-8890-4641-ad87-ac2c7ffa365d"
},
"execution_count": 16,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Variables internas del modelo\n",
"[array([[-0.7124086 , -0.01889843, 0.03179576]], dtype=float32), array([-3.804918, -3.252451, 3.30988 ], dtype=float32)]\n",
"[array([[-0.43088928, -1.3221139 , 0.49460554],\n",
" [-0.8288136 , -1.6023633 , -0.65609205],\n",
" [-0.9833128 , 0.4238512 , -0.2744644 ]], dtype=float32), array([-0.67448044, 3.6707468 , -2.0310473 ], dtype=float32)]\n",
"[array([[-0.13493302],\n",
" [ 1.8149701 ],\n",
" [-0.15621336]], dtype=float32), array([3.5843399], dtype=float32)]\n"
]
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment