KerasTuner: construyendo el modelo
Clase 16 de 28 • Curso Profesional de Redes Neuronales con TensorFlow
Contenido del curso
- 3

Carga y Procesamiento de Bases de Datos en Inteligencia Artificial
02:48 - 4

Carga de Bases de Datos JSON desde GCP en Google Colab
10:25 - 5

Codificación Base64 y Gestión de Imágenes en Google Colab
12:50 - 6

Preprocesamiento y limpieza de datos
12:15 - 7

Keras datasets
10:14 - 8

Datasets generators
18:36 - 9

Aprende a buscar bases de datos para deep learning
04:14 - 10

Cómo distribuir los datos
06:50 - 11

Crear la red neural, definir capas, compilar, entrenar, evaluar y predicciones
14:35
- 12

Métodos de regularización: overfitting y underfitting
11:16 - 13

Recomendaciones prácticas para ajustar un modelo
12:00 - 14

Métricas para medir la eficiencia de un modelo: callback
08:18 - 15

Monitoreo del entrenamiento en tiempo real: early stopping y patience
07:04 - 16

KerasTuner: construyendo el modelo
13:54 - 17

KerasTuner: buscando la mejor configuración para tu modelo
08:45
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.

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.