如何查找ImageDataGenerator生成的图像数量

hrz*_*rzm 9 deep-learning keras

嗨,我想问你一个关于Keras ImageDataGenerator的问题.我可以确定将创建多少个增强图像吗?或者如何在增强后找到训练图像集大小.在Keras文档中,流函数描述是:"采用numpy数据和标签数组,并生成批量的增广/规范化数据.无限循环地产生批量无限批次." 但是生成了多少图像?

例如下面的代码生成了多少图像?无穷 ?

from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img
from matplotlib import pyplot
import numpy as np

datagen = ImageDataGenerator(
        rotation_range=40,
        width_shift_range=0.2,
        height_shift_range=0.2,
        shear_range=0.2,
        zoom_range=0.2,
        horizontal_flip=True,
        fill_mode='nearest')
img=load_img('cat.1.jpg')
x=img_to_array(img)
x = x.reshape((1,) + x.shape) 
print x.shape
h=datagen.flow(x)
Run Code Online (Sandbox Code Playgroud)

hol*_*ola 2

你说的是正确的,你可以从一张图像生成无限多个。事实上,这是正常的,仅考虑从初始旋转可以生成的图像数量,它是无限的,因为对于每个旋转角度值,您可以生成不同的图像。为了确认这一点,我将展示keras 文档中的代码

for e in range(epochs):
    print('Epoch', e)
    batches = 0
    for x_batch, y_batch in datagen.flow(x_train, y_train, batch_size=32):
        model.fit(x_batch, y_batch)
        batches += 1
        if batches >= len(x_train) / 32:
            # we need to break the loop by hand because
            # the generator loops indefinitely
            break
Run Code Online (Sandbox Code Playgroud)

请注意,他们说生成器无限循环,这证实了生成了无限量的图像