【发布时间】: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_epoch和validation_steps。在使用无限生成数据的数据生成器时,您会使用这些术语。但由于您的情况并非如此,因此这些条款不是必需的。 -
这行得通。但是,我不确定我是否理解其他代码不起作用的原因。生成器不使用数据增强来生成我的数据的不同表示吗?基于这种直觉,我看不出我将如何用完数据,因为如果需要应该生成新数据?我错了吗?
标签: python tensorflow keras data-augmentation