Herramientas de usuario

Herramientas del sitio


clase:iabd:pia:2eval:tema09

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
clase:iabd:pia:2eval:tema09 [2025/02/15 19:50]
admin [Parada anticipada]
clase:iabd:pia:2eval:tema09 [2025/02/15 20:07] (actual)
admin [Ejercicios]
Línea 324: Línea 324:
 ===== Callbacks ===== ===== Callbacks =====
  
 +==== Guardar mejor modelo ====
 +Al entrenar no siempre la última época es el mejor modelo, por ello hay un callback de keras que nos guarda el mejor modelo. Se llama ''ModelCheckpoint''.
 +
 +La clase contiene entre otros los siguientes parámetros:
 +  * ''filepath'': Nombre del fichero donde se guarda el modelo
 +  * ''monitor'': La métrica a monitorizar. Por defecto monitoriza ''val_loss''.
 +  * ''mode'': Indica el tipo de métrica que es. Es decir si la métrica es mejor cuanto mayor valor tiene (''max'') o la métrica es mejor cuanto menor valor tiene (''min''). Por defecto es valor es ''auto'' y keras sabrá el tipo de la métrica por el nombre que tiene.
 +  * ''save_best_only=True'': Guardar solo el mejor modelo porque sino guara todos y no nos suele interesar.
 +
 +<sxh python>
 +from tensorflow.keras.callbacks import ModelCheckpoint
 +
 +checkpoint_callback = ModelCheckpoint(
 +    'best_model.h5',
 +    monitor='val_loss',
 +    save_best_only=True,
 +    mode='min'
 +)
 +
 +
 +history=model.fit(x_train,y_train,validation_data=(x_test,y_test),epochs=40,verbose=False,callbacks=[checkpoint_callback()])
 +
 +</sxh>
  
 ==== Parada anticipada ==== ==== Parada anticipada ====
Línea 351: Línea 374:
  
 </sxh> </sxh>
 +
 +<note tip>
 +¿Tiene sentido usar ''ModelCheckpoint'' si ya ''EarlyStopping'' nos permitirá obtener el mejor modelo con ''restore_best_weights=True''. Si ,porque si falla el entrenamiento , con ''ModelCheckpoint'' se va guardando a disco y así nunca lo perderemos.
 +</note>
 +
  
 Más información: Más información:
 +  * [[https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/ModelCheckpoint|tf.keras.callbacks.ModelCheckpoint]]
   * [[https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/EarlyStopping| tf.keras.callbacks.EarlyStopping]]   * [[https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/EarlyStopping| tf.keras.callbacks.EarlyStopping]]
   * [[https://towardsdatascience.com/a-practical-introduction-to-early-stopping-in-machine-learning-550ac88bc8fd|Early Stopping in Practice: an example with Keras and TensorFlow 2.0]]   * [[https://towardsdatascience.com/a-practical-introduction-to-early-stopping-in-machine-learning-550ac88bc8fd|Early Stopping in Practice: an example with Keras and TensorFlow 2.0]]
  
-==== Guardar mejor modelo ==== 
-Al entrenar no siempre la última época es el mejor modelo, por ello hay otro callback de keras que nos guarda el mejor modelo. Se llama ''ModelCheckpoint''. 
- 
-La clase contiene entre otros los siguientes parámetros: 
-  * ''filepath'': Nombre del fichero donde se guarda el modelo 
-  * ''monitor'': La métrica a monitorizar. Por defecto monitoriza ''val_loss''. 
-  * ''mode'': Indica el tipo de métrica que es. Es decir si la métrica es mejor cuanto mayor valor tiene (''max'') o la métrica es mejor cuanto menor valor tiene (''min''). Por defecto es valor es ''auto'' y keras sabrá el tipo de la métrica por el nombre que tiene. 
-  * ''save_best_only=True'': Guardar solo el mejor modelo porque sino guara todos y no nos suele interesar. 
- 
-<sxh python> 
-from tensorflow.keras.callbacks import ModelCheckpoint 
  
-checkpoint_callback = ModelCheckpoint( 
-    'best_model.h5', 
-    monitor='val_loss', 
-    save_best_only=True, 
-    mode='min' 
-) 
- 
- 
-history=model.fit(x_train,y_train,validation_data=(x_test,y_test),epochs=40,verbose=False,callbacks=[checkpoint_callback()]) 
- 
-</sxh> 
 ===== Ejercicios ===== ===== Ejercicios =====
  
-==== Ejercicio 1 ====+==== Ejercicio 1.A ====
 Crea una red neuronal para predecir si una persona va a tener una enfermedad cardíaca. Para ello se han usado los datos de {{https://www.kaggle.com/datasets/alexteboul/heart-disease-health-indicators-dataset}}. Crea una red neuronal para predecir si una persona va a tener una enfermedad cardíaca. Para ello se han usado los datos de {{https://www.kaggle.com/datasets/alexteboul/heart-disease-health-indicators-dataset}}.
  
Línea 411: Línea 418:
  
 Los datos son los siguientes: {{ :clase:iabd:pia:2eval:heart_disease_health_indicators_brfss2015.csv.zip |}} Los datos son los siguientes: {{ :clase:iabd:pia:2eval:heart_disease_health_indicators_brfss2015.csv.zip |}}
 +
 +==== Ejercicio 1.B ====
 +Mejora la red normalizando los datos . Usa ''StandardScaler''.
 +
 +¿Ha mejorado la red?
 +
 +==== Ejercicio 1.C ====
 +Modifica la red de forma que haya muchas neuronas y que haya sobreajuste.
 +
 +Debes mostrar una gráfica en la que se vea el //loss// en entrenamiento y validación.
 +
 +Ahora vamos a comprobar si es mejor regularizar (L1, L2 y L1L2) o simplemente no sobreentrenar para ello crea una gráficas similares a éstas:
 +
 +{{clase:iabd:pia:2eval:regularizacion_vs_loss_mejor_epoca.png}}
 +
 +
 +==== Ejercicio 1.D ====
 +Repite ahora las gráficas pero en vez de regularizar, usa Dropout
 +
 +==== Ejercicio 1.E ====
 +Usa ahora ''EarlyStopping'' y ''ModelCheckpoint'' para obtener el modelo evitando que se entrene durante tantas épocas y que se guarde a disco automáticamente.
 +
  
  
clase/iabd/pia/2eval/tema09.1739645452.txt.gz · Última modificación: 2025/02/15 19:50 por admin