当批处理大小大于1时,使用flow_from_dataframe从Keras数据生成器获取增强数据的真实标签



我在Ubuntu 18.04.4 LTS上使用keras版本2.3.1和tensorflow版本。我创建了我的数据生成器如下:

datagen = ImageDataGenerator(brightness_range=(0.5, 1.5), 
preprocessing_function=densenet.preprocess_input)

datagen = datagen.flow_from_dataframe(dataframe=df,
x_col="Image Path",
y_col=["class1", "class2", "class3"],
class_mode="raw",
shuffle=True,
batch_size=32,
seed=123,
target_size=(256, 256))

假设数据帧(df(中的图像数量为100个图像。如果我对这个数据生成器进行预测,如下

probs = model.predict_generator(datagen, steps=datagen.n, verbose=1)

由于数据增加,我将把问题作为维度为(3200,3(的数组。但是,当我尝试使用以下命令链接到真正的标签时。

y_true = datagen.labels

我得到了y_true的数组,维度为(100,3(,这是增强前图像的标签。我如何才能将每个增强样本与它的真实标签相匹配?由于我将datagen配置为混洗图像,我不确定是否可以使用此命令复制y_true中的每个带有batch_size数量的true标签。

y_true_augmented = np.repeat(y_true, repeats=32, axis=0)

我可以听听你的建议吗?

由于datagen是一个生成器,并且您已经指定了随机种子,所以您不能使用以下内容:

y_true = []
for x,y in datagen:
y_true.append(y)

对于n个步骤,然后将datagen传递给您的模型。如果我错了,请纠正我。

最新更新