记录,近期在用keras做项目的时候,使用keras的ImageDataGenerator从文件目录生成数据, 使用该生成器喂数据训练,训完发现训练精度很高,然而测试的时候,效果一塌糊涂;
排查原因后发现标签索引没有对上;原来ImageDataGenerator是按照目录的的字母排序进行的;所以你的目录命名决定了你的类别索引;
比较保险的做法是,导出ImageDateGenerator产生的索引和目录的映射表;
方法如下:调用class_indices变量查看映射表,映射表为字典,记录目录到索引的映射,所以,在训练的时候,也把这个保存下来!
train_dataGenerator = ImageDataGenerator()
trainGenerator = train_dataGenerator.flow_from_directory(
directory=file_dir,
target_size=(58, 100),
color_mode='rgb',
batch_size=128,
class_mode='categorical')
# print(trainGenerator.filenames)
print(trainGenerator.class_indices)
print(type(trainGenerator.class_indices))
import json
# 存储
fw = open('../data/dirname2idx.json', 'w', encoding='utf-8')
json.dump(trainGenerator.class_indices, fw)
🍅
599

被折叠的 条评论
为什么被折叠?



