Experimentar con redes más anchas
¡Ya sabes todo lo necesario para empezar a experimentar con distintos modelos!
Un modelo llamado model_1 ya está precargado. Puedes ver un resumen de este modelo impreso en la IPython Shell. Es una red relativamente pequeña, con solo 10 unidades en cada capa oculta.
En este ejercicio crearás un nuevo modelo llamado model_2, similar a model_1, excepto que tendrá 100 unidades en cada capa oculta.
Después de crear model_2, ambos modelos se ajustarán y se mostrará un gráfico con la pérdida de cada modelo en cada época. Hemos añadido el argumento verbose=False en los comandos de ajuste para mostrar menos actualizaciones, ya que las verás de forma gráfica en lugar de texto.
Como vas a ajustar dos modelos, tardará un momento en aparecer los resultados después de que pulses ejecutar; ten paciencia.
Este ejercicio forma parte del curso
Introducción al Deep Learning en Python
Instrucciones del ejercicio
- Crea
model_2para replicarmodel_1, pero usa100nodos en lugar de10para las dos primeras capasDenseque añadas con activación'relu'. Usa2nodos para la capa de salidaDensecon'softmax'comoactivation. - Compila
model_2como hiciste con modelos anteriores: usando'adam'comooptimizer,'categorical_crossentropy'para la pérdida ymetrics=['accuracy']. - Pulsa "Submit Answer" para ajustar ambos modelos y visualizar cuál da mejores resultados. Fíjate en el argumento con nombre
verbose=Falseenmodel.fit(): esto imprime menos actualizaciones, ya que evaluarás los modelos de forma gráfica en lugar de texto.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el 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()