您好我想问你一个关于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)
答案 0 :(得分:1)
您所说的是正确的,您可以从一张图像生成无限个数字。实际上,这是正常现象,仅考虑可通过初始旋转生成的图像数量是无限的,因为对于每个旋转角度值,您都可以生成不同的图像。为了确认这一点,我将显示keras documentation
中的代码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
请注意,他们说的是生成器无限循环,这确认生成了无限数量的图像