【问题标题】:Keras Fit_generator not reporting progress or in Validation Step or Verbose not enabled for validationKeras Fit_generator 未报告进度或在验证步骤中或未启用详细验证以进行验证
【发布时间】:2020-02-26 16:09:53
【问题描述】:

以下是 CNN 模式的代码。我可以看到训练的 EPOCH 进度条,但看不到验证。似乎执行在 Validation 时被卡住了,但不是……最后它打印了验证结果。 我可以在下面的代码中修改什么以在验证期间启用 Verbose

batch_size=64
h5_path = "EPOC_1_Feb_25_model.h5"
checkpoint = ModelCheckpoint(h5_path, monitor='val_acc',save_weights_only=True, verbose=1, save_best_only=True, mode='max')

history = model.fit_generator(
    data_gen(train, id_label_map, batch_size, augment=True),
    validation_data=data_gen(train2, id_label_map, batch_size),
    epochs=1, verbose=1,
    callbacks=[checkpoint],
    steps_per_epoch=len(train) // batch_size,
    validation_steps=len(train2) // batch_size)
model.load_weights(h5_path)

纪元 1/1 11/11 [===============================] - 262s 24s/step - loss: 0.4654 - acc: 0.8345 - weighted_loss : 0.4848 - val_loss: 0.4907 - val_acc: 0.8014 - val_weighted_loss: 0.4936

Epoch 00001:val_acc 从 -inf 提高到 0.80137,将模型保存到 EPOC_1_Feb_25_model.h5

希望看到进度

纪元 1/1 5/11 验证 [==================......] * # 验证的进度类型 ALSO*

而是突然跳转到 val_loss: 0.4907 - val_acc: 0.8014 - val_weighted_loss: 0.4936

【问题讨论】:

    标签: python keras conv-neural-network


    【解决方案1】:

    此问题解决方案正在进行中,请参阅 [https://github.com/tensorflow/tensorflow/issues/28648][1]

    同时,以下解决方法会有所帮助。用户自定义回调

    import datetime
    class ReportValidationStatus(tf.keras.callbacks.Callback):
    
            def on_test_batch_begin(self, batch, logs=None):
                print('Evaluating: batch {} begins at {}'.format(batch, datetime.now().time()))
    
            def on_test_batch_end(self, batch, logs=None):
                print('Evaluating: batch {} ends at {}'.format(batch, datetime.now().time()))
    

    history = model.fit_generator(
        data_gen(train, id_label_map,id_pz_map,train_images_dir, batch_size, augment=True),
        validation_data=data_gen(train, id_label_map,id_pz_map,train_images_dir, batch_size, augment=False),
        epochs=3, verbose=1,
        callbacks=[checkpoint,ReportValidationStatus()],
        steps_per_epoch=len(train) // batch_size,
        validation_steps=len(val) // batch_size)
    
    enter code here
    

    这可能会打印一些有线进度声明,但您不会 对进展一无所知。其次,您可能会注意到 第一个 Epoch 它可能会打印正在进行的验证。

    【讨论】:

      猜你喜欢
      • 2017-04-12
      • 1970-01-01
      • 2015-09-23
      • 2022-01-05
      • 2014-04-07
      • 2023-03-21
      • 2014-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多