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

KerasTuner: construyendo el modelo

16/28
Recursos

El autotuner de Keras nos permitirá automatizar el proceso de configuración de nuestra red neuronal.

Cuando deseemos iterar sobre múltiples configuraciones para nuestro modelo (probar diferentes capas, neuronas, épocas, learning rate y demás) no tendremos que hacerlo manualmente modelo a modelo, esta herramienta nos permitirá cargar y ejecutar diferentes fórmulas para comparar sus rendimientos.

Modificadores del KerasTuner

Implementando el autotuner

El autotuner de Keras no viene cargado por defecto en Google Colab, por lo que debemos instalarlo por terminal de comandos.

python !pip install -q -U keras-tuner

Para usarlo lo importaremos como kerastuner.

python import kerastuner as kt from tensorflow import keras

Para esta ocasión crearemos un nuevo constructor de modelos, este recibirá como parámetros un objeto tuner que determinará las variaciones de diferentes hiperparámetros.

Definiremos una arquitectura general, donde agregaremos una capa de convolución, Max Pooling y aplanamiento de manera fija, luego determinaremos la primer variable del constructor: La cantidad de neuronas en la siguiente capa oculta, se inicializará en 32 e incrementará hasta 512 dando saltos de 32 en 32.

La cantidad de neuronas de la siguiente capa será el objeto iterador. El resto de la red se mantendrá estable.

Finalmente definiremos variaciones en el learning rate, donde empezaremos el modelo con 3 posibles learning rate: 0.01, 0.001 y 0.0001.

Al momento de compilar el modelo definiremos Adam como optimizador, sin embargo, llamaremos directamente a la clase y le entregaremos el objeto iterador. El resto de parámetros seguirán iguales.

```python def constructor_modelos(hp): model = tf.keras.models.Sequential() model.add(tf.keras.layers.Conv2D(75, (3,3), activation = "relu", input_shape = (28,28,1))) model.add(tf.keras.layers.MaxPooling2D((2,2))) model.add(tf.keras.layers.Flatten())

hp_units = hp.Int("units", min_value = 32, max_value = 512, step = 32) model.add(tf.keras.layers.Dense(units = hp_units, activation = "relu", kernel_regularizer = regularizers.l2(1e-5))) model.add(tf.keras.layers.Dropout(0.2)) model.add(tf.keras.layers.Dense(128, activation = "relu", kernel_regularizer = regularizers.l2(1e-5))) model.add(tf.keras.layers.Dropout(0.2)) model.add(tf.keras.layers.Dense(len(classes), activation = "softmax"))

hp_learning_rate = hp.Choice("learning_rate", values = [1e-2, 1e-3, 1e-4])

model.compile(optimizer = keras.optimizers.Adam(learning_rate=hp_learning_rate), loss = "categorical_crossentropy", metrics = ["accuracy"])

return model ```

Esta función será la materia prima del tuner, el cual hará pruebas con todas las combinatorias para encontrar el modelo más optimo.

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

Aportes 6

Preguntas 1

Ordenar por:

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

KerasTuner permite la búsqueda y optimización de hiperparámetros. KerasTuner viene con algoritmos de optimización bayesiana, hiperbanda y búsqueda aleatoria integrados. El algoritmo de ajuste utiliza la asignación de recursos adaptativa y la detención anticipada para converger rápidamente en un modelo de alto rendimiento. El algoritmo entrena una gran cantidad de modelos durante algunas epochs y lleva solo la mitad de los modelos con mejor rendimiento a la siguiente ronda.

Existe otra librería llamada talos que cumple la misma función que keras-tuner, es más fácil de utilizar ya que usa diccionarios para la declaración de los hiperparámetros.

KerasTuner al rescate:

KerasTuner simplifica el ajuste de hiperparámetros al proporcionar una interfaz fácil de usar diseñada específicamente para los modelos Keras.


Le permite definir un espacio de búsqueda para sus hiperparámetros, especificando el rango de valores posibles que pueden tomar.


Luego, KerasTuner implementa diferentes algoritmos de búsqueda para explorar este espacio e identificar la configuración de hiperparámetros que produce el mejor rendimiento en su tarea.


Beneficios de usar KerasTuner:

Rendimiento mejorado del modelo:

  • Al encontrar la configuración óptima de hiperparámetros, KerasTuner puede mejorar significativamente el rendimiento de su modelo en una tarea determinada.

Tiempo de experimentación reducido

  • Automatiza el proceso de ajuste de hiperparámetros, lo que le ahorra tiempo y esfuerzo en comparación con la experimentación manual.

Mayor eficiencia

  • Optimiza la capacitación centrándose en configuraciones con mejor potencial.

En resumen, KerasTuner le permite optimizar el ajuste de hiperparámetros para sus modelos Keras, lo que genera modelos con mejor rendimiento y un flujo de trabajo de desarrollo más eficiente.

Así estructuré los comentarios del codigo del modelo

# definira una funcion que recibe la cantidad de neuronas inicial de la capa de entrada
def constructor_modelos(hp):
  model = tf.keras.models.Sequential() #modelo secuencial

  #capa de entrada
  # aplico convolucion y maxpool
  model.add(tf.keras.layers.Conv2D(75, (3,3), activation= "relu", input_shape = (28, 28, 1))) 
  model.add(tf.keras.layers.MaxPool2D((2,2)))
  #tranformo matriz de imagen a lista
  model.add(tf.keras.layers.Flatten())

  #capas intermedias 1
  #esta capa sera variable
  #para esta capa establecere un rango[32,512] e ire saltando con paso 32
  hp_units = hp.Int("units", min_value = 32, max_value = 512, step = 32) #establezco el rango
  model.add(tf.keras.layers.Dense(units=hp_units,activation = "relu", kernel_regularizer= regularizers.l2(1e-5))) #ese rango le doy a la capa
  model.add(tf.keras.layers.Dropout(0.2)) #como antes le doy ese dropout

  #capa intermedia 2
  #esta capa la hare fija,128 neuronas
  model.add(tf.keras.layers.Dense(128,activation = "relu", kernel_regularizer= regularizers.l2(1e-5)))
  model.add(tf.keras.layers.Dropout(0.2))

  #capa de salida
  model.add(tf.keras.layers.Dense(len(classes), activation = "softmax"))

  #tambien el lerning rate sera variable,entre estas tres opciones:
  hp_learning_rate = hp.Choice('learning_rate', values = [1e-2, 1e-3, 1e-4])
  model.compile(optimizer = keras.optimizers.Adam(learning_rate=hp_learning_rate),loss = "categorical_crossentropy", metrics = ["accuracy"])
  #para el optimizador probara con esas opciones de learning rate

  return model

Tiene errores sintácticos pero semánticamente se entiende jeje

a partir de aquí ya me perdí o.o