fit_generator如何处理训练和验证数据的子样本?

时间:2018-09-17 19:33:01

标签: tensorflow keras

我在keras中使用带有fit_generator的数据生成器(用于训练和验证数据)。 我得到了意想不到的结果,因此我对生成器进行了检测,以输出批处理索引并计算自上个时期以来的步骤数。我已经在模型指标中添加了['acc']。

fit_generator运行时,我看到它做了几件事:

  1. 它使验证数据排队(但我想它尚未评估)。
  2. 遍历所有训练数据并调用on_epoch_end()
  3. 它调用了另外10个步骤的训练数据。我认为这必须来自回调。在做什么?
  4. 它完成了遍历验证数据并调用on_epoch_end()
  5. 它调用验证数据的另外10个步骤。同样,它在做什么?
  6. fit_generator打印训练/验证损失和准确性并返回。

on_epoch_end()在3和5的10个步骤之后从未被调用。这可能是一个错误,因为我们需要在下一个纪元之前重置生成器。

我主要想了解3和5发生了什么,为什么要调用生成器,为什么只需要十步?

Versions:
print(keras.__version__)
2.2.2

print(tf.__version__)
1.9.0

1 个答案:

答案 0 :(得分:0)

根据Matias的评论:其他批次对应于下一个时期的预先排队的批次。当fit_generator返回时,它们会掉在地板上。在再次调用fit_generator之前,由用户来重置生成器。