Experimentando con redes más amplias
¡Ahora ya sabes todo lo necesario para empezar a experimentar con diferentes modelos!
Se ha precargado un modelo denominado « model_1
». Puedes ver un resumen de este modelo impreso en el terminal IPython. Se trata de 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
», salvo que tiene 100 unidades en cada capa oculta.
Después de crear un 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.
Dado que estás ajustando dos modelos, tardará un momento en aparecer el resultado después de pulsar «Ejecutar», así que ten paciencia.
Este ejercicio forma parte del curso
Introducción al aprendizaje profundo en Python
Instrucciones del ejercicio
- Crea un
model_2
e para replicarmodel_1
, pero utiliza nodos100
en lugar de10
para las dos primeras capasDense
que añadas con la activación'relu'
. Utiliza nodos «2
» para la capa de salida «Dense
» con «'softmax'
» como «activation
». - Compila
model_2
tal y como has hecho con los modelos anteriores: Utilizando'adam'
comooptimizer
,'categorical_crossentropy'
para la pérdida ymetrics=['accuracy']
. - Pulsa «Enviar respuesta» para ajustar ambos modelos y visualizar cuál ofrece mejores resultados. Fíjate en el argumento clave «
verbose=False
» en «model.fit()
»: Esto imprime menos actualizaciones, ya que evaluarás los modelos gráficamente en lugar de mediante texto.
Ejercicio interactivo práctico
Prueba este ejercicio completando 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()