首页 文章

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

提问于
浏览
2

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

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

相关问题