Cambiar los parámetros de optimización

Es hora de ensuciarse las manos con la optimización. Ahora intentarás optimizar un modelo con una tasa de aprendizaje muy baja, una tasa de aprendizaje muy alta y una tasa de aprendizaje "justa". Deberás observar los resultados después de realizar este ejercicio, recordando que un valor bajo de la función de pérdida es bueno.

Para estos ejercicios, hemos precargado los predictores y los valores objetivo de tus modelos de clasificación anteriores (predecir quién sobreviviría en el Titanic). Querrás que la optimización empiece desde cero cada vez que cambies la tasa de aprendizaje, para tener una comparación justa de cómo ha ido cada tasa de aprendizaje en tus resultados. Así que hemos creado una función get_new_model() que crea un modelo no optimizado para optimizar.

Este ejercicio forma parte del curso

Introducción al Aprendizaje Profundo en Python

Ver curso

Instrucciones de ejercicio

  • Importa SGD desde tensorflow.keras.optimizers.
  • Crea una lista de ritmos de aprendizaje para intentar optimizarla llamada lr_to_test. Los ritmos de aprendizaje en él deben ser .000001, 0.01, y 1.
  • Utilizando un bucle for para iterar sobre lr_to_test:
    • Utiliza la función get_new_model() para construir un nuevo modelo no optimizado.
    • Crea un optimizador llamado my_optimizer utilizando el constructor SGD() con el argumento de palabra clave lr=lr.
    • Compila tu modelo. Configura el parámetro optimizer para que sea el objeto SGD que creaste anteriormente, y como se trata de un problema de clasificación, utiliza 'categorical_crossentropy' para el parámetro loss.
    • Ajusta tu modelo utilizando predictors y target.

Ejercicio interactivo práctico

Pruebe este ejercicio completando este código de muestra.

# Import the SGD optimizer
____

# Create list of learning rates: lr_to_test
lr_to_test = ____

# Loop over learning rates
for lr in lr_to_test:
    print('\n\nTesting model with learning rate: %f\n'%lr )
    
    # Build new model to test, unaffected by previous models
    model = ____
    
    # Create SGD optimizer with specified learning rate: my_optimizer
    my_optimizer = ____
    
    # Compile the model
    ____
    
    # Fit the model
    ____