Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.3K
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda