【问题标题】:Data Augmentation with keras running out of datakeras 数据用完的数据增强
【发布时间】:2020-09-02 21:42:06
【问题描述】:

为什么这段代码不起作用,它直接取自“使用 Python 进行深度学习”一书。我收到错误消息:

“警告:tensorflow:您的输入数据用完了;中断训练。确保您的数据集或生成器至少可以生成steps_per_epoch * epochs 批次(在本例中为50 个批次)。您可能需要使用repeat( ) 构建数据集时的函数。”

这是相关代码的sn-p:

train_datagen = ImageDataGenerator(
    rescale=1./255,
    rotation_range=40,
    width_shift_range=0.2,
    height_shift_range=0.2,
    shear_range=0.2,
    zoom_range=0.2,
    horizontal_flip=True,)

test_datagen = ImageDataGenerator(rescale=1./255)

train_generator = train_datagen.flow_from_directory(
        train_dir,
        target_size=(150, 150),
        batch_size=32,
        class_mode='binary')

validation_generator = test_datagen.flow_from_directory(
        validation_dir,
        target_size=(150, 150),
        batch_size=32,
        class_mode='binary')

history = model.fit_generator(
      train_generator,
      steps_per_epoch=100,
      epochs=100,
      validation_data=validation_generator,
      validation_steps=50)

我不明白为什么它要我更改批量大小或steps_per_epoch,当它在书中起作用时。

【问题讨论】:

  • 你能添加我可以用最少数据量重现的代码吗?可能是你内存不够?
  • 我不确定我是否理解您要我添加的代码。就记忆而言,你是指初级记忆还是二级记忆?
  • 内存。如果你没有足够的内存。什么叫主记忆或次记忆?
  • 删除steps_per_epochvalidation_steps。在使用无限生成数据的数据生成器时,您会使用这些术语。但由于您的情况并非如此,因此这些条款不是必需的。
  • 这行得通。但是,我不确定我是否理解其他代码不起作用的原因。生成器不使用数据增强来生成我的数据的不同表示吗?基于这种直觉,我看不出我将如何用完数据,因为如果需要应该生成新数据?我错了吗?

标签: python tensorflow keras data-augmentation


【解决方案1】:

您可以尝试以下方法:

steps_per_epoch=train_generator.n//train_generator.batch_size

还有:

validation_steps=validation_generator.n//validation_generator.batch_size

【讨论】:

  • 我在其他地方也看到过这个解决方案。但是,我不明白为什么有必要?生成器不使用数据增强来生成我的数据的不同表示吗?基于这种直觉,我看不出我将如何用完数据,因为如果需要应该生成新数据?我错了吗?
  • 在底层它返回一个不会无限期运行的 tf.data.Dataset。变换是随机应用的。这不是无限期地创建的新图像。但这就是 keras 的制作方式。在以前的版本中,您不必指定这些参数。
猜你喜欢
  • 1970-01-01
  • 2017-05-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-05
  • 2019-05-26
  • 1970-01-01
  • 2019-01-02
  • 1970-01-01
相关资源
最近更新 更多