【发布时间】:2020-12-04 18:00:00
【问题描述】:
当我对我的模型调用 model.fit_generator() 时,它会在输出中显示您所期望的训练进度。然而,它完成了一个最大值,然后移动到验证。验证显示与训练相同的进度条,即使验证步骤完全不同(~70k 训练步骤/8k 验证步骤)。验证进度条在达到 8k 步时停止,例如:
75999/76000 [===========================>..] - ETA: 0s - loss: 0.4556 - acc: 0.840Epoch 1/500
8200/76000 [====>........................] - ETA: 0s - loss: 0.9822 - acc: 0.7564
第一行是训练,第二行是验证。
当我手动更改步骤以使训练步骤少于 val 步骤时,我得到以下输出:
19/20 [===========================>..] - ETA: 0s - loss: 0.4558 - acc: 0.8980Epoch 1/500
19/20 [===========================>..] - ETA: 0s - loss: 0.8200 - acc: 0.7730
在执行其余验证步骤时,它会在此输出上暂停。其余验证的输出未显示在进度条中。
当 val_steps 和 train_steps 从我的生成器生成时或当我如上所述手动设置它们时会发生此错误,因此问题不在于我的生成器 - 我认为。这是我对 fit_generator() 的调用(当我使用 .fit() 时也是如此)
model.fit_generator(
train_generator,
steps_per_epoch=train_steps,
epochs=epochs,
validation_data=val_generator,
validation_steps=val_steps,
verbose=1,
callbacks=[weight_saving_callback,early_stopping],
max_queue_size=40,
workers=1,
use_multiprocessing=False,
#train_class_weight=None, #because we are not using target classes
#val_class_weight=None, #because we are not using target classes
validation_freq=1)
谁能看到这个错误在哪里?我不认为它会影响训练过程,只是影响输出——但我不知道问题出在哪里。使用 TF 2.1 和 Keras 2.3.1。
简单地说:为什么验证进度条没有显示正确的验证步骤数?
【问题讨论】:
-
什么是 weight_saving_callback?它会在一个时期打印出任何东西吗?
-
它只是保存模型的权重,如果它们在损失指标方面是迄今为止最好的。它只是打印出损失是否在一个时期有所改善,以及一些指标
标签: python tensorflow machine-learning keras tensorflow2.0