我想使用KERS提供的图像增强片将我的图像加载到内存中 ImageDataGenerator . 因此,我创建了这样的生成器:
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 . 我怎样才能做到这一点?
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)
注意,这不会导致显著的增加。您将得到与原始数据相同数量的样本。
为了使增强真正起作用,您需要使用这个生成器反复训练,以便它生成相同图像的许多不同随机版本。