Cómo utilizar TensorFlow 2.0 con Python

1

Redes neuronales con TensorFlow

2

Introducción a TensorFlow 2.0

Manejo y preprocesamiento de datos para redes neuronales

3

Uso de data pipelines

4

Cómo cargar bases de datos JSON

5

Cargar bases de datos CSV y BASE 64

6

Preprocesamiento y limpieza de datos

7

Keras datasets

8

Datasets generators

9

Aprende a buscar bases de datos para deep learning

10

Cómo distribuir los datos

11

Crear la red neural, definir capas, compilar, entrenar, evaluar y predicciones

Optimización de precisión de modelos

12

Métodos de regularización: overfitting y underfitting

13

Recomendaciones prácticas para ajustar un modelo

14

Métricas para medir la eficiencia de un modelo: callback

15

Monitoreo del entrenamiento en tiempo real: early stopping y patience

16

KerasTuner: construyendo el modelo

17

KerasTuner: buscando la mejor configuración para tu modelo

Almacenamiento y carga de modelos

18

Almacenamiento y carga de modelos: pesos y arquitectura

19

Criterios para almacenar los modelos

Fundamentos de aprendizaje por transferencia

20

Introducción al aprendizaje por transferencia

21

Cuándo utilizar aprendizaje por transferencia

22

Carga de sistemas pre-entrenados en Keras

23

API funcional de Keras

24

Uso sistemas pre-entrenados de TensorFlow Hub

Resultados de entrenamiento

25

Introducción a variables relevantes del TensorBoard

26

Análisis y publicación de resultados del entrenamiento

27

Introducción al despliegue de modelos en producción

28

Siguientes pasos con deep learning

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Introducción al aprendizaje por transferencia

20/28
Recursos

El transfer learning es una técnica valiosísima que nos permite aprovechar modelos ya entrenados por otros devs para usarlos en nuestros datasets.

A través de este módulo comprenderemos qué es el aprendizaje por transferencia, cómo cargar sistemas pre-entrenados, cómo consumirlos desde fuentes de terceros y cómo aplicarlos a nuestros proyectos.

Temario general Transfer Learning

¿Cómo funciona el aprendizaje por transferencia?

Para entender cómo funciona el transfer learning vamos a hacer una analogía: cuando eras niño aprendiste a manejar bicicleta, durante ese aprendizaje entendiste los conceptos de equilibrio, fuerza, velocidad y demás. En el futuro, cuando aprendas a manejar moto, podrás trasladar gran parte de los conceptos que ya aprendiste para obtener ventaja en este nuevo aprendizaje.

A nivel de máquina el transfer learning se hace a través de las features o características del modelo que entrenaste originalmente. Supón que tienes un detector de manzanas y ahora quieres detectar otras frutas (naranjas, piñas, etc).

No será necesario volver a entrenar un modelo desde el inicio dado que ya posees una configuración que detecta formas y colores, bastaría con hacer algunas iteraciones sobre este modelo principal con los nuevos datos y obtendrás un modelo igual de funcional.

En la red puedes encontrar decenas de configuraciones que han sido entrenadas por meses de la mano de grandes protagonistas de la investigación del deep learning.

El proceso de configuración será el de eliminar la capa final de la red que vamos a aprovechar (la capa de predicciones original) y la sustituiremos por nuestra propia configuración de salida.

Arquitectura general CNN

Usando una red ya entrenada

Antes de usar un modelo pre-entrenado es fundamental entender su arquitectura.

La arquitectua MobileNet V2 fue diseñada para detección de objetos en dispositivos embebidos y móviles, su entrada es una imágen de 300x300 pixeles y a través de una serie de capas convolucionales con max pooling se adquieren todas las features a clasificar con un sistema de redes neuronales. Si quisieramos usarla, bastaría con eliminar la última capa y personalizarla a nuestra necesidad.

Arquitectura MobileNetV2

Para esta ocasión cargaremos el modelo Inception versión 3 (otra arquitectura altamente conocida de redes convolucionales). Importaremos nuestras dependencias de Keras y cargaremos la configuración desde la locación donde estén guardadas en disco, crearemos un modelo secuencial y lo inyectaremos desde la primer capa (nota que no se incluye la capa de salida).

Se añade nuestra nueva capa de salida y se configura al modelo como no entrenable.

```python from tensorflow.keras.layers import Dense from tensorflow.keras.Model import Sequential from tensorflow.keras.applications.inception_v3 import InceptionV3

URL incepction model

weights_file = "/tmp/inception_v3_weights_tf_dim_ordering_tf_kernels_notop.h5"

new_model = Sequential() new_model.add(InceptionV3(include_top = False, weights = weights_file))

new_model.add(Dense(num_classes, activation = "softmax")) new_model.layers[0].trainable = False ```

Con esto podemos aprovechar cientos de modelos ya entrenados por otros IA devs.

Contribución creada por Sebastián Franco Gómez.

Aportes 5

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Después de algunas horas haciendo los ejercicios del curso en Colab, ya no me deja conectar con el con el backend de GPU.
Seún indican Colab puede brindar recursos gratuitos pero tiene límites de uso dinámicos que a veces fluctúan y a que no proporciona recursos garantizados o ilimitados. Colab no publica estos límites, en parte porque pueden (y de hecho, lo hacen) cambiar. Como resultado, los usuarios que utilizan Colab para ejecutar cálculos de larga duración o los que usaron más recursos últimamente tienen más probabilidades de encontrar límites de uso o de que se restrinja de manera temporal su acceso a las GPU y TPU.

El aprendizaje por transferencia ofrece varias ventajas:

  1. Acelera el entrenamiento: Al aprovechar el conocimiento adquirido en la tarea fuente, el modelo para la tarea objetivo puede aprender más rápido y con menos datos. Esto es especialmente útil para tareas donde la recopilación de datos es costosa o difícil.

  1. Mejora el rendimiento: En muchos casos, el aprendizaje por transferencia puede conducir a un mejor rendimiento en la tarea objetivo, incluso si el modelo pre-entrenado no fue diseñado específicamente para esa tarea. Esto se debe a que el modelo pre-entrenado ha aprendido representaciones generales del mundo que pueden ser útiles para una amplia gama de tareas.

  1. Reduce la necesidad de datos: El aprendizaje por transferencia puede ser particularmente beneficioso cuando se dispone de conjuntos de datos pequeños para la tarea objetivo. Al utilizar un modelo pre-entrenado, el modelo objetivo puede aprender a partir de menos datos de los que necesitaría si se entrenara desde cero.

Tipos de aprendizaje por transferencia:

  1. Aprendizaje por transferencia fina (fine-tuning): En este enfoque, se ajusta el modelo pre-entrenado en la tarea objetivo. Esto implica modificar las capas superiores del modelo para que se adapten a los datos específicos de la tarea objetivo.

  1. Extracción de características (feature extraction): En este enfoque, se utilizan las capas iniciales del modelo pre-entrenado como extractor de características. Las características extraídas se utilizan luego para entrenar un nuevo modelo lineal o de otro tipo en la tarea objetivo.

Ejemplos

  1. Visión artificial: Se puede utilizar para entrenar modelos de reconocimiento de objetos, clasificación de imágenes y segmentación de imágenes.
  1. Procesamiento del lenguaje natural: Se puede utilizar para entrenar modelos de traducción automática, análisis de sentimientos y resumen de texto.
  1. Robótica: Se puede utilizar para entrenar robots para realizar tareas como la navegación, la manipulación de objetos y el reconocimiento de voz.

Hugging face es otro foro de modelos más reciente, que aquí en platzi también hay un curso para hacer transfer learning con el
https://huggingface.co/

El tema que tanto quería saber 😃

muy buena clase