ImageDataGenerator特别注意点

Keras中文文档里的相关说明

classes: 可选的类的子目录列表(例如 ['dogs', 'cats'])。默认:None。
如果未提供,类的列表将自动从 directory 下的 子目录名称/结构中推断出来,其中每个子目录都将被作为不同的类(类名将按字典序映射到标签的索引)。
包含从类名到类索引的映射的字典可以通过 class_indices 属性获得。

这个之前打农作物病虫灾害的时候蠢蠢的被坑过一回,不知道有对应的映射关系······比如文件件名字命名为1-12,调用ImageDataGenerator的flow_from_directory后映射却是

{'1': 0,
 '10': 1,
 '11': 2,
 '12': 3,
 '2': 4,
 '3': 5,
 '4': 6,
 '5': 7,
 '6': 8,
 '7': 9,
 '8': 10,
 '9': 11}

解决办法

fuck_dict =  train_generator.class_indices

preds = model.predict(img_tensor)
#prob = np.max(preds)
fake_class = int(np.argmax(preds))
true_class = fuck_dict[str(class_id)]