Experimentar con redes más amplias

¡Ahora ya sabes todo lo que necesitas para empezar a experimentar con distintos modelos!

Se ha precargado un modelo llamado model_1. Puedes ver un resumen de este modelo impreso en el Shell IPython. Se trata de una red relativamente pequeña, con sólo 10 unidades en cada capa oculta.

En este ejercicio crearás un nuevo modelo llamado model_2 que es similar a model_1, excepto que tiene 100 unidades en cada capa oculta.

Después de crear model_2, se ajustarán ambos modelos y se mostrará un gráfico con la puntuación de pérdida de ambos modelos en cada época. Hemos añadido el argumento verbose=False en los comandos de ajuste para imprimir menos actualizaciones, ya que las verás gráficamente en lugar de como texto.

Como estás ajustando dos modelos, tardarás un momento en ver los resultados después de pulsar ejecutar, así que ten paciencia.

Este ejercicio forma parte del curso

Introducción al Aprendizaje Profundo en Python

Ver curso

Instrucciones de ejercicio

  • Crea model_2 para replicar model_1, pero utiliza nodos 100 en lugar de 10 para las dos primeras capas Dense que añadas con la activación 'relu'. Utiliza los nodos 2 para la capa de salida Dense con 'softmax' como activation.
  • Compila model_2 como has hecho con los modelos anteriores: Utilizando 'adam' como optimizer, 'categorical_crossentropy' para la pérdida, y metrics=['accuracy'].
  • Pulsa "Enviar respuesta" para ajustar ambos modelos y ¡visualiza cuál da mejores resultados! Observa el argumento de la palabra clave verbose=False en model.fit(): Esto imprime menos actualizaciones, ya que estarás evaluando los modelos gráficamente en lugar de mediante texto.

Ejercicio interactivo práctico

Pruebe este ejercicio completando este código de muestra.

# Define early_stopping_monitor
early_stopping_monitor = EarlyStopping(patience=2)

# Create the new model: model_2
model_2 = ____

# Add the first and second layers
____.____(____(____, ____=____, input_shape=input_shape))
____

# Add the output layer
____

# Compile model_2
____

# Fit model_1
model_1_training = model_1.fit(predictors, target, epochs=15, validation_split=0.2, callbacks=[early_stopping_monitor], verbose=False)

# Fit model_2
model_2_training = model_2.fit(predictors, target, epochs=15, validation_split=0.2, callbacks=[early_stopping_monitor], verbose=False)

# Create the plot
plt.plot(model_1_training.history['val_loss'], 'r', model_2_training.history['val_loss'], 'b')
plt.xlabel('Epochs')
plt.ylabel('Validation score')
plt.show()