python - Keras 图像数据增强

标签 python keras deep-learning conv-neural-network

我发现很难理解 ImageDataGeneratorflow_from_directory 是如何工作的,我使用以下代码为我的 CNN 模型增加图像数据,因为没有训练图像可用的非常少。

batch_size = 16
from keras.preprocessing.image import ImageDataGenerator
train_transformed = 'dataset/train_transformed'
train_datagen = ImageDataGenerator(
    rescale=1./255,
    horizontal_flip=True,
    fill_mode='nearest')

train_generator = train_datagen.flow_from_directory(
    'dataset/train',
    target_size=(150, 150),
    batch_size=batch_size,
    class_mode='binary',
    save_to_dir=train_transformed,
    save_prefix='train_aug',
    save_format='png')

这是一个具有 20 个正图像和 20 个负图像的二元分类问题。所以我有 dataset/train 文件夹,其中有 2 个子文件夹,每个子文件夹有 20 张图像。当我用上面的图像生成器训练模型时,我可以看到 4160 图像被保存在 dataset/train_transformed 文件夹中并假定 4160 图像被用于训练模型。

model.fit_generator(
    train_generator,
    steps_per_epoch=1000 // batch_size,
    epochs=5,
    validation_data=validation_generator,
    validation_steps=100 // batch_size)

据我了解, 每个epoch的样本数= batch_size X steps_per_epoch
正如我的 steps_per_epoch = 1000/16 = 62,
#每个 epoch 中的样本应该是 62 x 16 = 992
No of epochs 设置为 5,因此生成的图像总数应为 992 x 5 = 4960
并且没有生成的图像是随机的具有相同的超参数。
只是需要对上述配置进行解释。

最佳答案

您的计算似乎是正确的。还要注意 flow_from_directory 有一个 shuffle 参数(默认为 true)。这意味着生成器将在每个时期生成 992 张图像(batch_size 乘以 steps_per_epoch),但它们出现的顺序对于每个时期都不同。

关于python - Keras 图像数据增强,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54414885/

相关文章:

tensorflow - tensorflow 中的自定义 f1_score 指标

tensorflow - 如何不在 Tensorflow Keras 中保存模型优化器?

python - 是否可以根据 Python 中的密码安全地加密然后解密数据?

python - 将每个批处理或纪元的验证准确性打印到控制台(Keras)

python - 使用 python 的 DFS incorerct 输出

csv - Tensorflow 如何将 csv 文件中的单词(字符串)转换为正确的向量

python - 带有 Keras Functional API 的多输入多输出模型

deep-learning - 无论如何,是否可以将 tensorflow-gpu 与 intel(r) hd graphics 520 一起使用?

python - 删除(或预填)PayPal Express Checkout 的地址详细信息

python - 如何减少二维连接域上的集成的集成时间