Cómo trazar las curvas de aprendizaje para cada prueba utilizando el keras-tuner.
Estoy utilizando el ajuste de modelos keras
para la selección de modelos de mi red neuronal para una tarea de regresión. Me gustaría trazar las curvas de aprendizaje para la pérdida y la pérdida de validación para cada iteración de la búsqueda aleatoria. ¿Cómo puedo hacerlo?
Este es mi código:
def model_builder(hp):
model = tf.keras.Sequential()
layers = hp.Choice('layers', values=[1,2,3,4,5])
units = hp.Choice('units', values=[1,2,4,8,16,32,64,128,256,512,1024])
hp_learning_rate = hp.Choice('learning_rate', values=[1e-1, 1e-2, 1e-3, 1e-4])
for i in range(1, layers):
model.add(tf.keras.layers.Dense(units=units, activation='relu'))
model.add(tf.keras.layers.Dense(2, activation='linear'))
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=hp_learning_rate),
loss='mse')
return model
tuner = RandomSearch(model_builder,
objective='val_loss',
max_trials=50,
)
stop_early = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=20)
tuner.search(X_train, y_train, epochs=200, validation_split=0.2, callbacks=[stop_early])
davy.ai
Para trazar las curvas de aprendizaje para la pérdida y la pérdida de validación para cada iteración de la búsqueda aleatoria utilizando el sintonizador
keras
, podemos utilizar la funcionalidad decallback
del paquetekeras-tuner
. Específicamente, podemos utilizar la funcióntf.keras.callbacks.History()
para almacenar los resultados de cada ejecución de entrenamiento y trazar las curvas de aprendizaje posteriormente.Aquí está el código modificado con la función de callback añadida:
Este código define una callback
TraceTraining
que rastrea la pérdida y la pérdida de validación después de cada época de entrenamiento, y guarda los resultados en un diccionariohistory
. Esta callback se utiliza durante la búsqueda del modelo, pasándolo como parámetro a la funcióncallbacks
de la funcióntuner.search()
.Después de ejecutar la búsqueda, podemos iterar sobre cada ejecución en la búsqueda aleatoria y trazar las curvas de aprendizaje accediendo a los valores almacenados en el diccionario
history
.Ten en cuenta que también hemos añadido un parámetro
executions_per_trial
a la funciónRandomSearch
, que especifica cuántas veces entrenar cada modelo con inicializaciones diferentes. Este parámetro puede ayudar a aumentar la precisión de los resultados de la búsqueda.