Evaluación del rendimiento del modelo

Para evaluar el desempeño del modelo, llamamos evaluate método de la siguiente manera -

loss_and_metrics = model.evaluate(X_test, Y_test, verbose=2)

Para evaluar el desempeño del modelo, llamamos evaluate método de la siguiente manera -

loss_and_metrics = model.evaluate(X_test, Y_test, verbose=2)

Imprimiremos la pérdida y la precisión utilizando las siguientes dos declaraciones:

print("Test Loss", loss_and_metrics[0])
print("Test Accuracy", loss_and_metrics[1])

Cuando ejecute las declaraciones anteriores, verá el siguiente resultado:

Test Loss 0.08041584826191042
Test Accuracy 0.9837

Esto muestra una precisión de prueba del 98%, que debería ser aceptable para nosotros. Lo que significa para nosotros que en el 2% de los casos, los dígitos escritos a mano no se clasificarían correctamente. También trazaremos métricas de precisión y pérdida para ver cómo funciona el modelo en los datos de prueba.

Trazado de métricas de precisión

Usamos el grabado historydurante nuestro entrenamiento para obtener un gráfico de métricas de precisión. El siguiente código trazará la precisión en cada época. Recogemos la precisión de los datos de entrenamiento ("acc") y la precisión de los datos de validación ("val_acc") para el trazado.

plot.subplot(2,1,1)
plot.plot(history.history['acc'])
plot.plot(history.history['val_acc'])
plot.title('model accuracy')
plot.ylabel('accuracy')
plot.xlabel('epoch')
plot.legend(['train', 'test'], loc='lower right')

La gráfica de salida se muestra a continuación:

Como puede ver en el diagrama, la precisión aumenta rápidamente en las dos primeras épocas, lo que indica que la red está aprendiendo rápido. Posteriormente, la curva se aplana, lo que indica que no se requieren demasiadas épocas para entrenar más el modelo. Por lo general, si la precisión de los datos de entrenamiento ("acc") sigue mejorando mientras que la precisión de los datos de validación ("val_acc") empeora, se está produciendo un sobreajuste. Indica que el modelo está empezando a memorizar los datos.

También trazaremos las métricas de pérdida para verificar el desempeño de nuestro modelo.

Trazado de métricas de pérdida

Nuevamente, graficamos la pérdida en los datos de entrenamiento ("pérdida") y de prueba ("val_loss"). Esto se hace usando el siguiente código:

plot.subplot(2,1,2)
plot.plot(history.history['loss'])
plot.plot(history.history['val_loss'])
plot.title('model loss')
plot.ylabel('loss')
plot.xlabel('epoch')
plot.legend(['train', 'test'], loc='upper right')

La salida de este código se muestra a continuación:

Como puede ver en el diagrama, la pérdida en el conjunto de entrenamiento disminuye rápidamente durante las dos primeras épocas. Para el conjunto de prueba, la pérdida no disminuye al mismo ritmo que el conjunto de entrenamiento, pero permanece casi plana durante múltiples épocas. Esto significa que nuestro modelo se está generalizando bien para datos invisibles.

Ahora, usaremos nuestro modelo entrenado para predecir los dígitos en nuestros datos de prueba.