我正在使用自己的图像数据生成器。它将生成0、90、180和270度旋转的图像批处理版本,并将它们及其类返回。我使用内置的ImageDataGenerator
函数来测试模型。但是flow_from_directory
会生成不同的类索引。 train_generator.class_indices
的输出为{'0': 0, '90': 1, '180': 2, '270': 3}
。但是test_generator.class_indices
返回{'0': 0, '180': 1, '270': 2, '90': 3}
。我可以简单地更改旋转角度的顺序,但是此问题是由操作系统的文件系统引起的,因此我将在其他操作系统上运行代码。在这种情况下,我需要一个自动化的解决方案。有没有办法改变flow_from_directory
方法的类索引?
答案 0 :(得分:1)
看起来可以做到
flow_from_directory(directory,
classes={'0': 0,
'90': 1,
'180': 2,
'270': 3}
)
答案 1 :(得分:1)
绝对可以,而且可以。
摘自Keras官方文件:https://keras.io/api/preprocessing/image/: flow_from_directory 和 flow_from_dataframe 方法都有一个参数名称 classes 。
对于 flow_from_directory ,它说明:
类:类子目录的可选列表(例如['dogs','cats'])。默认值:无。如果未提供,则会从目录下的子目录名称/结构自动推断出类列表,其中每个子目录将被视为一个不同的类(并且映射到标签索引的类顺序将为字母数字)。可以通过属性class_indices获得包含从类名到类索引的映射的字典。
这意味着,当在您的 flow_from_directory 方法中指示方法类= ['dogs','cats']时,标签“ dogs”,然后“ cats”将按照列表顺序映射到标签索引中,即,0、1 ...
如果不这样做,它们将按字母数字顺序排列,“ dogs”为1,而“ cats”为0。