Python Keras-将图像从生成器加载到内存中
我想利用kerasPython 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,
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。这能工作吗?或者在训练期间会引起麻烦吗?你可以使用任意数量的发电机。但对于增强,只有一个就足够了。第二个循环与第一个循环不同。