我有一个5个样本的测试数据集和2000个样本的训练数据集 . 我想扩充我的数据集,我正在关注keras提供的示例
datagen_test = ImageDataGenerator(
featurewise_center=True,
featurewise_std_normalization=True,
rotation_range=20,
width_shift_range=0.2,
height_shift_range=0.2,
horizontal_flip=True
)
datagen_train = ImageDataGenerator(
featurewise_center=True,
featurewise_std_normalization=True,
rotation_range=20,
width_shift_range=0.2,
height_shift_range=0.2,
horizontal_flip=True
)
datagen_train.fit(x_train)
validation_generator = datagen_test.flow(x_test, y_test, batch_size=5)
model.compile(loss=keras.losses.categorical_crossentropy,
optimizer='rmsprop',
metrics=['accuracy'])
# fits the model on batches with real-time data augmentation:
model.fit_generator(datagen_train.flow(x_train, y_train, batch_size=50),
steps_per_epoch=len(x_train) / 10, epochs=epochs,
validation_data=validation_generator, validation_steps=800)
我认为 steps_per_epoch 参数是传递给分类器的批次数 . 我将发生器中的 batch_size 设置为50,但是我只有5个样本 . 我认为我的问题与 samples_per_epoch 无关,后者是一个时期内处理的样本数量 .
我的问题是:生成器是否会转换我的图像以创建50个不同的样本并将它们传递给分类器或仅变换5个?
1 回答
不幸的是 - 当你只有5个例子时将
batch_size
设置为50将使你的生成器在每个批次中只返回5个例子(尽管batch_size
) . 因此,它不会将您的批次扩展到50
.