我在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传递给您的模型。如果我错了,请纠正我。