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

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

11 Días
6 Hrs
41 Min
51 Seg

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

14/28
Recursos

Cuando entrenamos nuestros modelos requerimos de monitorear su desempeño durante el entrenamiento, esto nos dará tiempo de reacción para entender por qué rinden como rinden. En esta ocasión manejaremos callbacks personalizados para monitorear el desempeño de nuestra red en términos de precisión y pérdida.

Aplicando callbacks a nuestro modelo

Para esta ocasión crearemos un modelo llamado model_callbacks, virtualmente será idéntico al último modelo trabajado, pero cambiaremos levemente el comportamiento del entrenamiento cuando sea llamado.

```python model_callback = tf.keras.models.Sequential([ tf.keras.layers.Conv2D(75, (3,3), activation = "relu", input_shape = (28, 28, 1)), tf.keras.layers.MaxPool2D((2,2)), tf.keras.layers.Flatten(), tf.keras.layers.Dense(256, kernel_regularizer = regularizers.l2(1e-5), activation = "relu"), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(128, kernel_regularizer = regularizers.l2(1e-5), activation = "relu"), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(len(classes), activation = "softmax") ])

model_callback.summary()

model_callback.compile(optimizer = "adam", loss = "categorical_crossentropy", metrics = ["accuracy"]) ```

Crearemos nuestro propio callback desde la clase Callback que nos ofrece Keras.

Podemos activar un callback en cualquier momento del ciclo de vida del modelo, para esta ocasión podemos elegir si activarlo al inicio de cada época, durante el entrenamiento o al final, para esta ocasión elegiremos el último caso.

Crearemos nuestra clase TrainingCallback que heredará de Callback, definiremos la función on_epoch_end que se activará cada que termine una época y recibirá como parámetros el objeto mismo, la época y los logs (que contendrán las métricas de la red).

Obtenemos la precisión de los logs y la comparamos, para esta ocasión determinaremos que el modelo se detenga si es mayor a 95% o 0.95, si es así, entonces daremos un pequeño mensaje pantalla y setearemos la variable self.model.stop_training en verdadero para detenerlo prematuramente.

```python from tensorflow.keras.callbacks import Callback

class TrainingCallback(Callback): def on_epoch_end(self, epoch, logs = {}): if logs.get("accuracy") > 0.95: print("Lo logramos, nuestro modelo llego a 95%, detenemos nuestro modelo") self.model.stop_training = True ```

Para hacer efectivo este callback, creamos una instancia y lo inyectamos al momento de entrenar el modelo en el parámetro de callbacks, puedes notar que recibe una lista, por lo que puedes agregar cuantos quieras.

```python callback = TrainingCallback()

history_callback = model_callback.fit( train_generator, epochs = 20, callbacks = [callback], validation_data = validation_generator ) ```

El entrenamiento empezará, y al cumplirse la condición el entrenamiento se detendrá prematuramente.

python Epoch 3/20 215/215 [==============================] - ETA: 0s - loss: 0.1442 - accuracy: 0.9673Lo logramos, nuestro modelo llego a 95%, detenemos nuestro modelo 215/215 [==============================] - 46s 213ms/step - loss: 0.1442 - accuracy: 0.9673 - val_loss: 0.5947 - val_accuracy: 0.8428

Personalizando callbacks

Puedes personalizar tus propios callbacks que podrás usar en diferentes etapas (entrenamiento, testing y predicción), para este ejemplo mostraremos en pantalla un mensaje según el inicio de cada etapa del entrenamiento.

```python from tensorflow.keras.callbacks import Callback

class TrainingCallback(Callback): def on_train_begin(self, logs=None): print('Starting training....')

def on_epoch_begin(self, epoch, logs=None): print('Starting epoch {}'.format(epoch))

def on_train_batch_begin(self, batch, logs=None): print('Training: Starting batch {}'.format(batch))

def on_train_batch_end(self, batch, logs=None): print('Training: Finished batch {}'.format(batch))

def on_epoch_end(self, epoch, logs=None): print('Finished epoch {}'.format(epoch))

def on_train_end(self, logs=None): print('Finished training!') ``` En la sección de recursos puedes encontrar ejemplos para los casos de test y predicción, además de documentación al respecto.

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

Aportes 4

Preguntas 1

Ordenar por:

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

Los Callbacks son útiles para tener visibilidad de los estados internos y las estadísticas del modelo durante el entrenamiento.

La gran ventaja, es que se puede visualizar información en puntos específicos indicados, y entender que está pasando con el rendimiento del modelo.

Métricas clave para la evaluación de modelos mediante devoluciones de llamada:

Pérdida

La función de pérdida mide el error entre las predicciones del modelo y los valores objetivo verdaderos.
Una pérdida menor indica un mejor rendimiento.
Las funciones de pérdida comunes incluyen el error cuadrático medio (MSE) para tareas de regresión y la entropía cruzada categórica para tareas de clasificación.


Exactitud

La precisión mide la proporción de predicciones clasificadas correctamente.
Es una métrica simple e intuitiva para tareas de clasificación.
Sin embargo, puede resultar engañoso para conjuntos de datos desequilibrados, donde el modelo puede priorizar la predicción de la clase mayoritaria incluso si tiene un desempeño deficiente en la clase minoritaria.


Precisión

La precisión mide la proporción de predicciones positivas que realmente son correctas.
Es particularmente útil para tareas donde los falsos positivos tienen costos elevados.


Recordar

La recuperación mide la proporción de casos positivos reales que el modelo identifica correctamente.
Es importante para tareas en las que pasar por alto los verdaderos aspectos positivos puede tener consecuencias importantes.


Puntuación F1

La puntuación F1 es una métrica equilibrada que considera tanto la precisión como la recuperación.
Se calcula como la media armónica de precisión y recuperación.
Una puntuación F1 más alta indica un mejor rendimiento general entre precisión y recuperación.


AUC (Área bajo la curva ROC)

El AUC mide la capacidad del modelo para distinguir entre casos positivos y negativos en todos los umbrales posibles.
Es una métrica independiente del umbral que proporciona una evaluación más completa de la capacidad de discriminación del modelo.

from tensorflow.keras.callbacks import Callback

OPCION 1

Se va mejorando el accuracy, si despues de 1 epochs (patience=1) no mejora, se detiene
Es decir, cuando detecta deterioro se detiene

early = tf.keras.callbacks.EarlyStopping(monitor=‘accuracy’,patience=1)

model.fit(train_images,
train_labels,
batch_size=64,
callbacks=[early],
epochs=10)

OPCION 2

En el archivo mi_modelo.hdf5 guardara los mejores pesos del modelo

checkpoint = tf.keras.callbacks.ModelCheckpoint(filepath=‘mejor_modelo.hdf5’,
verbose=1,
monitor=‘accuracy’,
save_best_only=True)

hist = model.fit(datagen.flow(x_train, y_train, batch_size=128),
callbacks=[chekcpoint],
steps_per_epoch=x_train.shape[0] // 128,
epochs=20,
verbose=2,
shuffle=True, #??
validation_data=(x_valid, y_valid) # <-
)

#tiene el mejor modelo

model2 = model
model2.load_weights(’./mejor_modelo.hdf5’)
model2.evaluate(test_image, test_labels)
Error, Accuracy

Resumen, tomo archivo hdf5 cuando tuve los mejores pesos
Y luego lo cargo, y verifico su error y su accuracy

OPCION 3

from tensorflow.keras.callbacks import Callback

class TrainingCallback(Callback):
def on_epoch_end(self, epoch, logs = {}):
if logs.get(“accuracy”) > 0.90:
print("Modelo llego a 95%, STOP "+str(epoch))
self.model.stop_training = True

callback = TrainingCallback()

history=model.fit(train_images,
train_labels,
batch_size=64,
callbacks = [callback],
epochs=40)

Como aplico los callback personalizados? no me quedo claro si debo modificar las funciones declaradas en las las clases