我正在尝试预测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.jpg
,a9.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]
我该如何解决这个问题?
答案 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
的并行列表。