您的输入数据用完了

时间:2020-08-29 19:58:02

标签: tensorflow2.0 tensorflow-datasets

history = model.fit_generator(
      train_generator,
      steps_per_epoch=50,  
      epochs=10,
      verbose=1,
      validation_data = validation_generator,
      validation_steps=50)

tensorflow:您的输入数据用完;中断训练。确保您的数据集或生成器至少可以生成steps_per_epoch * epochs个批次(在这种情况下为5000个批次)。构建数据集时,可能需要使用repeat()函数。

1 个答案:

答案 0 :(得分:1)

要解决此问题,我们需要注意两项:

  1. 如何定义批处理大小,batch_size和steps_per_epoch。 简单的答案是steps_per_epoch = total_train_size // batch_size
  2. 如何为训练过程定义最大纪元数。 这不像第一个那么简单。

大多数答案都涵盖了第一个主题,第二个我找不到很好的答案,请尝试解释如下:

我的火车数据集包含93个数据样本,batch_size为32,因此第一个问题是: steps_per_epoch = total_train_size // batch_size = 93 // 32 = 2

对于第二个问题,这将取决于您的数据生成器可以提供多少不重复的批次,如果我有93个数据样本,每个批次需要32个两个样本,那么每个时期都有2个训练步骤。您将有93 // 2 = 46个纪元,这些纪元将不能提供重复的批处理,纪元47将导致此错误。

我没有找到有关tensorflow数据生成器的参考,所以这只是我的理解,如果有任何错误,请纠正我,谢谢!