我想利用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
中。我该如何实现?
答案 0 :(得分:1)
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)
请注意,这不会导致明显的扩充。您最终将获得与原始数据相同数量的样本。
为使扩增真正起作用,您需要反复使用此生成器进行训练,以便生成相同图像的许多不同随机版本。