keras:如何按顺序预测课程?

时间:2016-06-23 03:38:28

标签: keras

我正在尝试预测keras中的图像类(二进制分类)。模型的准确性很好,但似乎ImageDataGenerator混合输入图像,所以我无法将预测的类与原始图像相匹配。

datagen = ImageDataGenerator(rescale=1./255)

generator = datagen.flow_from_directory(
        pred_data_dir,
        target_size=(img_width, img_height),
        batch_size=32,
        class_mode=None,
        shuffle=False,
        save_to_dir='images/aug'.format(feature))

print  model.predict_generator(generator, nb_input)

例如,如果我在a1.jpg下有a2.jpga9.jpg,...,pred_data_dir,我希望得到一个类似

的数组
[class for a1.jpg, class for a2.jpg, ... class for a9.jpg] 

来自model.predict_generator(),但实际上我有点像

[class for a3.jpg, class for a8.jpg, ... class for a2.jpg]

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:5)

查看flow_from_directory的源代码。在我的情况下,我不得不重命名所有图像。他们被命名为1.jpg .. 1000.jpg,但要按顺序,他们必须被命名为0001.jpg .. 1000.jpg。排序很重要。

flow_from_directory使用sorted(os.listdir(directory)),因此排序并不总是直观的。

答案 1 :(得分:0)

Department d1 = new Department("d1"); d1.addWeekDay(day); d1 =repository.save(d1); Department d2 = new Department("d2"); d2.addWeekDay(sameValuesAsDay); d2 =repository.save(d2); 方法返回flow_from_directory()对象,其中DirectoryIterator成员列出了所有文件。由于该成员用于后续批处理生成和迭代,因此您应该能够使用它将文件名与预测相匹配。

对于您的示例,filenames应该为您提供类似generator.filenames的并行列表。