Python Keras-将图像从生成器加载到内存中

Python Keras-将图像从生成器加载到内存中,python,tensorflow,keras,Python,Tensorflow,Keras,我想利用kerasImageDataGenerator提供的图像增强操作将我的图像加载到内存中。因此,我创建的生成器如下所示: testgen = ImageDataGenerator(preprocessing_function=keras.applications.mobilenet.preprocess_input) test_generator = testgen.flow_from_dataframe(dataframe=df_test,

我想利用keras
ImageDataGenerator
提供的图像增强操作将我的图像加载到内存中。因此,我创建的生成器如下所示:

testgen = ImageDataGenerator(preprocessing_function=keras.applications.mobilenet.preprocess_input)

test_generator = testgen.flow_from_dataframe(dataframe=df_test, 
                                             classes=class_labels, 
                                             directory=data_dir,
                                             x_col=training_on, 
                                             y_col=target, 
                                             has_ext=True, 
                                             class_mode="categorical", 
                                             target_size=(224,224), 
                                             batch_size=batch_size,
                                             seed = 1,
                                             shuffle=False)
现在,我可以使用以下方法获得单个批次:

x,y = next(test_generator)
但是,我想将整个数据集(可能是扩充的)存储到
x
y
中。我怎样才能做到这一点

xTrain = list()
yTrain = list()
for i in range(len(test_generator)):
    x,y = test_generator[i] 
    xTrain.append(x)
    yTrain.append(y)

xTrain = np.array(xTrain)
yTrain = np.array(yTrain)
备选方案:

xTrain = list()
yTrain = list()
for i in range(number_of_batches):
    x,y = next(test_generator)
    xTrain.append(x)
    yTrain.append(y)

xTrain = np.array(xTrain)
yTrain = np.array(yTrain)
请注意,这不会导致显著的增强。您将得到与原始数据相同数量的样本


为了使增强功能真正发挥作用,您需要使用该生成器反复训练,以便生成相同图像的许多不同随机版本

非常感谢!还感谢您对增加金额的评论。我想知道是否有可能(甚至有意义)在训练期间使用第二个带有.flow参数的ImageDataGenerator来增强(xTrain,yTrain)。那么我当然不会在第一次加载时增加xTrain,yTrain。这能工作吗?或者在训练期间会引起麻烦吗?你可以使用任意数量的发电机。但对于增强,只有一个就足够了。第二个循环与第一个循环不同。