arrow_back

TensorFlow: Qwik Start

Acceder Unirse
Pon a prueba tus conocimientos y compártelos con nuestra comunidad
done
Obtén acceso a más de 700 labs prácticos, insignias de habilidad y cursos

TensorFlow: Qwik Start

Lab 45 minutos universal_currency_alt 1 crédito show_chart Introductorio
info Es posible que este lab incorpore herramientas de IA para facilitar tu aprendizaje.
Pon a prueba tus conocimientos y compártelos con nuestra comunidad
done
Obtén acceso a más de 700 labs prácticos, insignias de habilidad y cursos

GSP637

Labs de autoaprendizaje de Google Cloud

Descripción general

En este lab, aprenderás el modelo básico de aprendizaje automático "Hello World" con el que, en lugar de programar reglas explícitas en un lenguaje como Java o C++, compilas un sistema que se entrena con datos para inferir las reglas que determinan una relación entre números.

Objetivos

En este lab, aprenderás a hacer lo siguiente:

  • Configurar el entorno de desarrollo en el notebook de Jupyter
  • Diseñar un modelo de aprendizaje automático
  • Entrenar una red neuronal
  • Probar un modelo

Configuración y requisitos

Antes de hacer clic en el botón Comenzar lab

Lee estas instrucciones. Los labs son cronometrados y no se pueden pausar. El cronómetro, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.

Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.

Para completar este lab, necesitarás lo siguiente:

  • Acceso a un navegador de Internet estándar (se recomienda el navegador Chrome)
Nota: Usa una ventana de navegador privada o de Incógnito para ejecutar este lab. Así evitarás cualquier conflicto entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
  • Tiempo para completar el lab: Recuerda que, una vez que comienzas un lab, no puedes pausarlo.
Nota: Si ya tienes un proyecto o una cuenta personal de Google Cloud, no los uses en este lab para evitar cargos adicionales en tu cuenta.

Introducción

Analiza el siguiente problema: estás compilando un sistema con reconocimiento de actividad para monitorear el estado físico. Es posible que tengas acceso a la velocidad con la que una persona se desplaza, este dato se puede usar para intentar inferir su actividad con una función condicional:

if(speed<4){ status=WALKING; }
  • Podrías usar otra condición para incorporar la opción de correr con running:
if(speed<4){ status=WALKING; } else { status=RUNNING; }
  • De forma similar, podrías agregar otra condición para detectar cuando practica ciclismo con biking:
if(speed<4){ status=WALKING; } else if(speed<12){ status=RUNNING; } else { status=BIKING; }
  • ¿Qué sucedería si quieres incluir una actividad como el golf? Cómo crear una regla para determinar esa actividad de pronto se vuelve menos evidente.
// Now what?

Es sumamente difícil escribir un programa (con código) que permita detectar una actividad como el golf.

¿Qué deberías hacer? ¡Puedes usar el aprendizaje automático para resolver este problema!

¿Qué es el aprendizaje automático?

En la sección anterior, analizamos el problema de determinar la actividad física de un usuario. Observamos las limitaciones de lo que se puede lograr incluso con más código, ya que las condiciones que se usan deben ser más complejas para poder detectar una actividad como el golf.

En el siguiente diagrama, se representa la forma tradicional para compilar aplicaciones:

Un diagrama en el que se muestra el flujo de reglas y datos como entradas de la programación tradicional y las respuestas como resultado

Expresas reglas en un lenguaje de programación. Las reglas se aplican a los datos, y tu programa proporciona las respuestas. En el caso de la detección de la actividad física, las reglas (es decir, el código que escribiste para definir los tipos de actividades) se aplicaron a los datos (la velocidad de desplazamiento de la persona) para encontrar una respuesta, es decir, el valor que devuelve la función para determinar el estado de la actividad del usuario (si está caminando, corriendo, practicando ciclismo, etc.).

El proceso para detectar esta actividad a través del aprendizaje automático es muy parecido, solo que los ejes son distintos:

Un diagrama en el que se muestra el flujo de respuestas y datos como entradas del aprendizaje automático y las reglas como resultado

En lugar de intentar definir las reglas y expresarlas en un lenguaje de programación, proporcionas las respuestas (por lo general, etiquetas) junto con los datos. Luego, la máquina infiere las reglas que determinan la relación entre las respuestas y los datos. Por ejemplo, en el contexto del aprendizaje automático, tu iniciativa de detección de la actividad podría tener el siguiente formato:

Las cuatro etiquetas (caminar, correr, hacer ciclismo y jugar al golf) se muestran con unos y ceros

Recolectas muchos datos y los etiquetas para indicar que "esto sucede cuando el usuario camina", "esto sucede cuando el usuario corre", etc. Luego, a partir de esos datos, la computadora puede inferir las reglas que determinan los diferentes patrones que indican una actividad en particular.

Además de ser un método alternativo de programación para este caso en particular, también te permite explorar otras situaciones, como el caso del golf, que quizás no eran posibles con la programación tradicional basada en reglas.

En la programación tradicional, tu código se compila en un objeto binario que, generalmente, se conoce como un programa. En el aprendizaje automático, el elemento que creas con los datos y etiquetas se denomina modelo.

Volvamos a ver el diagrama anterior:

Un diagrama en el que se muestra el flujo de respuestas y datos como entradas del aprendizaje automático y las reglas como resultado

El resultado del diagrama anterior se puede considerar un modelo, que se usa del siguiente modo en el entorno de ejecución:

Un diagrama en el que se muestra el flujo de datos como entrada a un modelo, cuyo resultado son predicciones

Se pasan datos al modelo y este usa las reglas que infirió del entrenamiento para elaborar una predicción, es decir, "esos datos coinciden con los de caminar", "esos datos coinciden con los de practicar ciclismo", etcétera.

En este lab, compilarás un modelo "Hello World" muy simple con componentes básicos que se puede usar en cualquier caso de aprendizaje automático.

Tarea 1. Abre el notebook en Vertex AI Workbench

  1. En el menú de navegación de la consola de Google Cloud, haz clic en Vertex AI > Workbench.

  2. Busca la instancia y haz clic en el botón Abrir JupyterLab.

La interfaz de JupyterLab para tu instancia de Workbench se abrirá en una pestaña nueva del navegador.

Instala TensorFlow y paquetes adicionales

  1. En el menú Launcher, en Other, selecciona Terminal.

  2. Comprueba si tu entorno de Python ya está configurado. Copia y pega el siguiente comando en la terminal.

python --version

Resultado de ejemplo:

Python 3.10.14
  1. Ejecuta el siguiente comando para instalar el paquete de TensorFlow.
pip3 install tensorflow
  1. Para actualizar pip3, ejecuta el siguiente comando en la terminal.
pip3 install --upgrade pip

Pylint es una herramienta que verifica si hay errores en el código de Python y destaca problemas sintácticos y estilísticos en tu código fuente de ese lenguaje.

  1. Ejecuta el siguiente comando para instalar el paquete de pylint.
pip install -U pylint --user
  1. Instala los paquetes necesarios para realizar el lab en el archivo requirements.txt:
pip install -r requirements.txt

Ahora, tu entorno está configurado.

Tarea 2. Crea tu primer modelo de aprendizaje automático

Analiza los siguientes conjuntos de números. ¿Encuentras una relación entre ellos?

X:

-1

0

1

2

3

4

Y:

-2

1

4

7

10

13

Observa cómo, de izquierda a derecha, el valor de X aumenta de a 1 y el valor correspondiente de Y aumenta de a 3. Por lo cual, la relación debería ser Y=3X más o menos un valor.

Por otro lado, el valor correspondiente al número 0 en X, en Y, es 1.

Con estos datos, puedes determinar que la relación es Y=3X+1.

Esta es la forma de entrenar un modelo, conocido como red neuronal, con código para detectar patrones en los datos.

Se usan los datos para entrenar la red neuronal. Con la incorporación de un conjunto de X y un conjunto de Y, este modelo debería poder descifrar la relación entre ellos.

Crea un notebook nuevo y, luego, importa bibliotecas

  1. Haz clic en el ícono del signo + en el costado izquierdo de Workbench para abrir un nuevo Launcher.

  2. En el menú Launcher, en Notebook, selecciona Python3.

nuevo archivo de notebook

Se te presentará un nuevo notebook de Jupyter. Para obtener más información sobre cómo usar notebooks de Jupyter, consulta la documentación de notebooks de Jupyter.

  1. Importa y configura logging y google-cloud-logging para Cloud Logging. En la primera celda, agrega el siguiente código:
import logging import google.cloud.logging as cloud_logging from google.cloud.logging.handlers import CloudLoggingHandler from google.cloud.logging_v2.handlers import setup_logging cloud_logger = logging.getLogger('cloudLogger') cloud_logger.setLevel(logging.INFO) cloud_logger.addHandler(CloudLoggingHandler(cloud_logging.Client())) cloud_logger.addHandler(logging.StreamHandler())
  1. Importa tensorflow para entrenar y evaluar el modelo. Llámalo tf para facilitar su uso. Agrega el siguiente código a la primera celda.
# Import TensorFlow import tensorflow as tf
  1. Importa numpy con el objetivo de analizar los datos para la depuración. Llámalo np para facilitar su uso. Agrega el siguiente código a la primera celda.
# Import numpy import numpy as np
  1. Para ejecutar la celda, haz clic en el botón Ejecutar o presiona Mayúsculas + Intro.

  2. Guarda el notebook. Haz clic en Archivo -> Guardar. Asígnale al archivo el nombre model.ipynb y haz clic en Aceptar.

Nota: Puedes ignorar las advertencias que podrían aparecer en el resultado.

Prepara los datos

A continuación, prepararemos los datos con los que entrenarás a tu modelo. En este lab, se usarán las 6 X y las 6 Y que analizamos antes:

X:

-1

0

1

2

3

4

Y:

-2

1

4

7

10

13

Como se puede observar aquí, la relación entre las X y las Y es Y=3x+1, por lo que X = 1, Y = 4, etcétera.

La biblioteca de Python llamada numpy ofrece muchas estructuras de datos de tipo array que funcionan como un método estándar de facto para agregar datos. Para usarlas, especifica los valores como un array en numpy con np.array([])

  1. En la segunda celda, agrega el siguiente código:
xs = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype=float) ys = np.array([-2.0, 1.0, 4.0, 7.0, 10.0, 13.0], dtype=float)

Diseña el modelo

En esta sección, diseñarás tu modelo con TensorFlow.

Usarás un algoritmo de aprendizaje automático llamado red neuronal para entrenar tu modelo. Crearás la red neuronal más simple posible. Tiene una capa y esa capa tiene 1 neurona. La entrada de la red neuronal es un solo valor a la vez. Por lo cual, el formato de la entrada debe ser [1].

Nota: Obtendrás más información sobre las redes neuronales en los próximos labs de esta Quest.
  1. En la segunda celda, agrega el siguiente código:
model = tf.keras.Sequential([tf.keras.layers.Dense(units=1, input_shape=[1])])

Compila el modelo

A continuación, escribirás el código para compilar tu red neuronal. Para ello, debes especificar 2 funciones, loss y optimizer.

Si tienes conocimientos de matemática para aprendizaje automático, aquí es donde los pondrías en práctica, pero ten en cuenta que tf.keras lo encapsula perfectamente en funciones.

  • Del análisis previo, ya sabes que la relación entre los números es Y=3X+1.

  • Cuando la computadora está intentando aprender esta relación, hace una estimación… quizás sea Y=10x+10. La función loss compara las respuestas estimadas con las respuestas correctas conocidas y mide el nivel de exactitud de la estimación.

Nota: Obtén más información sobre los diferentes tipos de funciones de pérdida en tf.keras en la documentación Module: tf.keras.losses.
  • A continuación, el modelo usa la función optimizer para hacer otra estimación. Según el resultado de la función loss, intentará minimizar la pérdida. En este momento, es posible que presente algo como Y=5X+5. Aunque aún no es correcto, se acerca más al resultado correcto (es decir que la pérdida es menor).
Nota: Obtén más información sobre los diferentes tipos de funciones de optimizadores en tf.keras en la documentación Module: tf.keras.optimizers.
  • El modelo repite este proceso para la cantidad de ciclos de entrenamiento que especifiques.
  1. Agrega el siguiente código a la segunda celda:
model.compile(optimizer=tf.keras.optimizers.SGD(), loss=tf.keras.losses.MeanSquaredError())

En el fragmento de código anterior, le indicas al modelo que debe usar mean_squared_error para la función de pérdida y stochastic gradient descent (sgd) para la de optimizador. Aunque aún no comprendas la matemática que se aplica aquí, verás que funciona.

Nota: Con el tiempo, aprenderás a usar las funciones de pérdida y optimizador correctas en diversas situaciones.

Entrena la red neuronal

Para entrenar la red neuronal con el objetivo de que "aprenda" la relación entre las X y las Y, usarás model.fit.

Esta función entrenará el modelo en un bucle en el que hará una estimación, medirá su nivel de exactitud (es decir, la pérdida), usará el optimizador para hacer otra estimación y así sucesivamente. Se repetirá el proceso durante la cantidad de ciclos de entrenamiento que especifiques, que en este lab es de 500.

  1. Agrega el siguiente código a la segunda celda:
model.fit(xs, ys, epochs=500)

En el código anterior, model.fit entrenará el modelo durante una cantidad fija de ciclos de entrenamiento.

Nota: Obtén más información acerca de model.fit en la sección fit de la documentación de tf.keras.Model.

Ahora, tu archivo debería tener el siguiente formato (observa que el código estará en dos celdas distintas):

import logging import google.cloud.logging as cloud_logging from google.cloud.logging.handlers import CloudLoggingHandler from google.cloud.logging_v2.handlers import setup_logging cloud_logger = logging.getLogger('cloudLogger') cloud_logger.setLevel(logging.INFO) cloud_logger.addHandler(CloudLoggingHandler(cloud_logging.Client())) cloud_logger.addHandler(logging.StreamHandler()) import tensorflow as tf import numpy as np xs = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype=float) ys = np.array([-2.0, 1.0, 4.0, 7.0, 10.0, 13.0], dtype=float) model = tf.keras.Sequential([tf.keras.layers.Dense(units=1, input_shape=[1])]) model.compile(optimizer=tf.keras.optimizers.SGD(), loss=tf.keras.losses.MeanSquaredError()) model.fit(xs, ys, epochs=500)

Ejecuta el código

¡Tu secuencia de comandos está lista! Ejecútala para ver los resultados.

  1. Haz clic en el botón Ejecutar o presiona Mayúsculas + Intro para ejecutar la segunda celda en el notebook.

  2. Examina el resultado. Observa que la secuencia de comandos imprime la pérdida de cada ciclo de entrenamiento. Tu resultado puede ser algo distinta de lo que se muestra aquí.

Nota: Un número con e- en el valor se muestra en notación científica con un exponente negativo.

Si te desplazas por los ciclos de entrenamiento, verás que el valor de pérdida es bastante grande en los primeros ciclos, pero se va reduciendo con cada paso. Por ejemplo:

Las líneas de pérdida de los ciclos de entrenamiento que disminuye gradualmente. La segunda línea de pérdida de ciclo de entrenamiento es 52.1992, mientras que la novena línea es 9.7403

A medida que el entrenamiento avanza, la pérdida se vuelve muy pequeña:

La 45º línea de pérdida de ciclo de entrenamiento es de 0.0023, mientras que la 54º es 7.1057e-04

Para el momento en que finaliza el entrenamiento, la pérdida es extremadamente baja, lo que muestra que nuestro modelo es eficiente a la hora de inferir la relación entre los números.

La 495º línea de pérdida de ciclo de entrenamiento es 5.4194e-08, mientras que la 500º línea es 4.8896e-08

Es probable que no necesites realizar 500 ciclos de entrenamiento, pero intenta experimentar con diversos valores. En este ejemplo, la pérdida es realmente baja después de 50 ciclos de entrenamiento, por lo que esa cantidad puede ser suficiente.

Haz clic en Revisar mi progreso para verificar el objetivo. Crear modelos de aprendizaje automático

Usa el modelo

Ahora, tienes un modelo que se entrenó para detectar la relación entre X e Y.

Puedes usar el método model.predict para determinar el valor de Y para una X que el modelo no haya visto antes en el entrenamiento. Por ejemplo, si X = 10, ¿qué valor crees que será Y?

  1. Agrega el siguiente código a la tercera celda para realizar una predicción:
cloud_logger.info(str(model.predict(np.array([10.0])))) Nota: El resultado de tu predicción se pasa a cloud_logger para producir registros de Cloud que se puedan usar para consultar el progreso.
  1. Presiona Ctrl + S o haz clic en Archivo -> Guardar para guardar el notebook.

  2. Para ejecutar la tercera celda, haz clic en el botón Ejecutar o presiona Mayúsculas + Intro.

El valor de Y se indica después del registro de entrenamiento (o los ciclos de entrenamiento).

Resultado de ejemplo:

El valor de Y es 31.005917

Posiblemente, estimaste que Y era igual a 31. Acabó siendo un poco más (31.005917). ¿Por qué?

Respuesta: Las redes neuronales trabajan con probabilidades. Calculó que hay una probabilidad muy alta de que la relación entre la X y la Y sea Y=3X+1. Pero con solo 6 datos no puede saberlo con seguridad. Por eso, el resultado de 10 es muy cercano a 31, pero no es necesariamente 31.

A medida que uses redes neuronales, verás que este patrón es recurrente. Casi siempre trabajarás con probabilidades, no certezas, y se necesitará aplicar algo de programación para determinar cuál es el resultado en función de las probabilidades, especialmente a la hora de la clasificación.

Haz clic en Revisar mi progreso para verificar el objetivo. Usar el modelo

¡Felicitaciones!

¡Felicitaciones! En este lab, creaste, entrenaste y probaste tu propio modelo de aprendizaje automático con TensorFlow.

Próximos pasos/Más información

Capacitación y certificación de Google Cloud

Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.

Actualización más reciente del manual: 16 de septiembre de 2024

Prueba más reciente del lab: 16 de septiembre de 2024

Copyright 2024 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.

Este contenido no está disponible en este momento

Te enviaremos una notificación por correo electrónico cuando esté disponible

¡Genial!

Nos comunicaremos contigo por correo electrónico si está disponible