Blog
Entender el Comportamiento del Modelo Durante el Entrenamiento graficando la Pérdida y la Precisión
- Publicado por: Rafael Fernandez
- Categoría: Deep Learning
-En esta lección descubrirás cómo puedes repasar y visualizar el rendimiento de modelos de aprendizaje profundo a lo largo del tiempo durante el entrenamiento en Python con Keras.
-Cómo inspeccionar las métricas del historial recogidas durante la capacitación.
-Cómo trazar métricas de precisión de los conjuntos de datos de capacitación y validación durante la capacitación.
-Cómo trazar métricas de pérdida de modelos en conjuntos de datos de validación y capacitación durante la capacitación.
Usted puede aprender mucho sobre Redes Neuronales y modelos de Deep Learning observando sus rendimientos a lo largo del tiempo durante el entrenamiento.
Acceso al Historial del Entrenamiento del Modelo en Keras
Keras proporciona la capacidad de registrar callbacks (llamadas de retorno) cuando se entrena un modelo de aprendizaje profundo. Unas de las llamadas de retorno predeterminadas que se registra cuando se entrenan todos los modelos de aprendizaje profundo es el Historial, que registra las métricas de entrenamiento para cada época. Esto incluye la pérdida y la precisión (para problemas de clasificación), así como la pérdida y la precisión del conjunto de datos de validación.
El objeto history devuelve las llamadas a la función fit() utilizada para entrenar al modelo. Las métricas se almacenan en un diccionario en el miembro de la history del objeto devuelto. Por ejemplo, se pueden listar las métricas recogidas en un objeto del historial utilizando el siguiente fragmento de código después de que un modelo está entrenado:
#lista de datos del historial print(history.history.keys())
Por ejemplo, para un modelo entrenado en un problema de clasificación con un conjunto de datos de validación, esto podría producir el siguiente listado:
[‘loss’, ‘acc’, ‘val_loss’, ‘val_acc’]Podemos utilizar los datos recogidos en el objeto history para crear gráficos. Las gráficas pueden proporcionar una indicación de cosas útiles sobre la formación del modelo, tales como:
- Su velocidad de convergencia sobre épocas (pendiente).
- Si el modelo ya ha convergido (meseta de la línea).
- Si el modelo puede estar sobre-aprendiendo los datos de la capacitación (en para la línea de validación).
Visualizar el Historial del Entrenamiento del Modelo en Keras
Podemos crear gráficos a partir de los datos históricos recopilados. En el siguiente ejemplo creamos un una pequeña red para modelar la aparición del problema de clasificación binaria de la diabetes en los indios Pima (ver este post). El ejemplo recoge el historial, devuelto de la formación del modelo y crea dos gráficos:
- Un gráfico de la precisión de los conjuntos de datos de formación y validación a lo largo de las épocas de formación.
- Un gráfico de pérdidas en los conjuntos de datos de formación y validación sobre las épocas de formación.
# Visualizando el entrenamiento history from keras.models import Sequential from keras.layers import Dense import matplotlib.pyplot as plt import numpy # Fijar las semillas aleatorias para la reproducibilidady seed = 7 numpy.random.seed(seed) # carga los datos pima indians dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",") # dividido en variables de entrada (X) y salida (Y) X = dataset[:,0:8] Y = dataset[:,8] # creacion del modelo model = Sequential() model.add(Dense(12, input_dim=8, kernel_initializer='uniform', activation='relu')) model.add(Dense(8, kernel_initializer='uniform', activation='relu')) model.add(Dense(1, kernel_initializer='uniform', activation='sigmoid')) # Compila el modelo model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # Fit el modelo history = model.fit(X, Y, validation_split=0.33, epochs=150, batch_size=10, verbose=0) # lista de datos history print(history.history.keys()) # hacemos las grafica 1 precision plt.plot(history.history['acc']) plt.plot(history.history['val_acc']) plt.title('Precision del modelo') plt.ylabel('Precision') plt.xlabel('epocas') plt.legend(['Entrenamiento', 'test'], loc='upper left') plt.show() # hacemos las grafica 2 perdidas plt.plot(history.history['loss']) plt.plot(history.history['val_loss']) plt.title('Perdidas del modelo') plt.ylabel('perdidas') plt.xlabel('epocas') plt.legend(['Entrenamiento', 'test'], loc='upper left') plt.show()
Las graficas se detallan a continuación. El historial del conjunto de datos de validación se etiqueta como prueba por convención, ya que de hecho es un conjunto de datos de prueba para el modelo. A partir del gráfico de precisión podemos ver que el modelo probablemente podría ser entrenado un poco más, ya que la tendencia de precisión en ambos conjuntos de datos sigue aumentando en los últimos tiempos. También podemos ver que el modelo todavía no ha sobre-aprendido el conjunto de datos de capacitación, mostrando habilidades comparables en ambos conjuntos de datos.
A partir del gráfico de pérdidas, podemos ver que el modelo tiene un rendimiento comparable tanto en el entrenamiento como en los conjuntos de datos de validación (prueba etiquetada).
Resumen del post “Comportamiento del Modelo Durante el Entrenamiento graficando la Pérdida y la Precisión”
En esta lección usted descubrió la importancia de recopilar y revisar métricas durante el entrenamiento de sus modelos de aprendizaje profundo. Aprendiste:
- Cómo inspeccionar un objeto histórico devuelto del entrenamiento para descubrir las métricas que se recopilaron.
- Cómo extraer información de precisión del modelo para conjuntos de datos de formación y validación para graficar los datos.
- Cómo extraer y graficar la información de pérdida del modelo calculada a partir de conjuntos de datos de formación y validación.
➡ ¿Quieres aprender mas de Deep Learning? Ingresa a nuestro curso:
Me sale este error y no se como arreglarlo:
File “c:/Users/miang/OneDrive/Escritorio/CURSO de Deep Learning/9-Visualizando el entrenamiento history/VisializandoelEntrenamientoHistory.py”, line 27
plt.plot(history.history[‘val_acc’])
^
SyntaxError: invalid syntax
Hola, es un error de sintaxis cuando haces el plot