【发布时间】:2021-04-16 02:32:33
【问题描述】:
我目前正在学习如何使用 François Chollet 的“Deep learning with Keras”中的 Keras ImageDataGenerator 执行数据增强。
我现在在训练数据集中有 1000 张(狗)和 1000 张(猫)图像。
我在验证数据集中还有 500(狗)和 500(猫)图像。
本书将生成器中的训练和验证数据的批量大小定义为 32,以便在拟合模型时使用“step_per_epoch”和“epoch”执行数据增强。
Hpwever,当我训练模型时,我收到了 Tensorflow 警告,“您的输入没有数据......”并停止了训练过程。
我在网上搜索了很多解决方案都提到step_per_epoch应该是,
steps_per_epoch = len(train_dataset) // batch_size & steps_per_epoch = len(validation_dataset) // batch_size
我理解上面的逻辑,训练中没有警告。
但我想知道,最初我有 2000 个训练样本。这太少了,所以我需要执行数据增强来增加训练图像的数量。
如果应用steps_per_epoch = len(train_dataset) // batch_size,因为len(train_dataset)只有2000个。那我不是还在用2000个样本来训练模型,而不是在模型中添加更多的增强图像吗?
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)
【问题讨论】:
标签: tensorflow image-processing keras deep-learning data-augmentation