适合keras中的生成器和数据增强

时间:2017-10-17 11:48:09

标签: python keras

我有一个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 个答案:

答案 0 :(得分:0)

不幸的是 - 当你只有5个例子时将batch_size设置为50会使你的生成器在每个批次中只返回5个例子(尽管batch_size)。因此,它不会将您的批次扩展到50