Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1.3K
Views
Error de devolución de llamada de detención temprana de Keras, métrica val_loss no disponible

Estoy entrenando un Keras (backend de Tensorflow, Python, en MacBook) y recibo un error en la devolución de llamada de detención temprana en la función fit_generator. El error es el siguiente:

 RuntimeWarning: Early stopping conditioned on metric `val_loss` which is not available. Available metrics are: (self.monitor, ','.join(list(logs.keys()))), RuntimeWarning: Can save best model only with val_acc available, skipping. 'skipping.' % (self.monitor), RuntimeWarning [local-dir]/lib/python3.6/site-packages/keras/callbacks.py:497: RuntimeWarning: Early stopping conditioned on metric `val_loss` which is not available. Available metrics are: (self.monitor, ','.join(list(logs.keys()))), RuntimeWarning [local-dir]/lib/python3.6/site-packages/keras/callbacks.py:406: RuntimeWarning: Can save best model only with val_acc available, skipping. 'skipping.' % (self.monitor), RuntimeWarning) Traceback (most recent call last): : [my-code] : File "[local-dir]/lib/python3.6/site-packages/keras/legacy/interfaces.py", line 91, in wrapper return func(*args, **kwargs) File "[local-dir]/lib/python3.6/site-packages/keras/engine/training.py", line 2213, in fit_generator callbacks.on_epoch_end(epoch, epoch_logs) File "[local-dir]/lib/python3.6/site-packages/keras/callbacks.py", line 76, in on_epoch_end callback.on_epoch_end(epoch, logs) File "[local-dir]/lib/python3.6/site-packages/keras/callbacks.py", line 310, in on_epoch_end self.progbar.update(self.seen, self.log_values, force=True) AttributeError: 'ProgbarLogger' object has no attribute 'log_values'

Mi código es el siguiente (que se ve bien):

 : ES = EarlyStopping(monitor="val_loss", min_delta=0.001, patience=3, mode="min", verbose=1) : self.model.fit_generator( generator = train_batch, validation_data = valid_batch, validation_steps = validation_steps, steps_per_epoch = steps_per_epoch, epochs = epochs, callbacks = [ES], verbose = 1, workers = 3, max_queue_size = 8)

El mensaje de error parece estar relacionado con la devolución de llamada de detención anticipada, pero la devolución de llamada parece estar bien. Además, el error indica que val_loss no es apropiado, pero no estoy seguro de por qué... una cosa más inusual sobre esto es que el error solo ocurre cuando uso conjuntos de datos más pequeños.

Cualquier ayuda es apreciada.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Si el error solo ocurre cuando usa conjuntos de datos más pequeños, es muy probable que esté usando conjuntos de datos lo suficientemente pequeños como para no tener una sola muestra en el conjunto de validación.

Por lo tanto, no puede calcular una pérdida de validación.

over 4 years ago · Santiago Trujillo Report

0

El error se nos ocurre porque olvidamos establecer la validación_datos en el método fit(), mientras usamos 'callbacks': [keras.callbacks.EarlyStopping(monitor='val_loss', patience=1)],

El código que causa el error es:

 self.model.fit( x=x_train, y=y_train, callbacks=[keras.callbacks.EarlyStopping(monitor='val_loss', patience=1)], verbose=True)

Adición validation_data=(self.x_validate, self.y_validate), en fit() arreglado:

 self.model.fit( x=x_train, y=y_train, callbacks=[keras.callbacks.EarlyStopping(monitor='val_loss', patience=1)], validation_data=(x_validate, y_validate), verbose=True)
over 4 years ago · Santiago Trujillo Report

0

Voté a favor de la respuesta anterior, ya que me dio la idea de verificar los datos y las entradas de la función fit_generator y descubrir cuál era realmente la causa raíz del problema. En resumen, en los casos en que mi conjunto de datos era pequeño, calculé los pasos de validation_steps y steps_per_epoch por época, que resultaron ser cero (0), lo que provocó el error.

Supongo que la mejor respuesta a largo plazo, quizás para el equipo de Keras, es causar un error/excepción en fit_generator cuando estos valores son cero, lo que probablemente conduciría a una mejor comprensión sobre cómo abordar este problema.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!