keras - Keras flow_from_directory 弄乱了标签
问题描述
我在 keras 生成器中加载批量图像。该目录具有以下结构:
alot/
1/
1_c1i.png
1_c1l1.png
1_c1L1r60.png
...
2/
2_c1i.png
2_c1l1.png
...
...
每个目录对应一个类,包含 100 张图片。当我将它们加载到生成器中时,它似乎完全弄乱了图像所属的标签。
image_size_x = 200
image_size_y = 200
train_generator = datagen.flow_from_directory(
'D:/wrkfldr/dataset_textures/alot',
batch_size=32,
target_size=(image_size_x,image_size_y),
class_mode='categorical')
如果我遍历图像,每个图显示的标签都是错误的
x,y = train_generator.next()
for i in range(0,31):
image = x[i]
label = y[i]
index = list(label).index(1)
print (index)
plt.imshow(image.reshape(image_size_x,image_size_y,3).astype(np.uint8))
plt.show()
我检查过,没有偏移量 1 或 -1 或任何东西。标签真的是完全随机的,我不知道为什么会这样。
我尝试过使用其他结构,它可以工作。但是这个特别的没有,我不知道为什么。我有什么明显的遗漏吗?
解决方案
极好的。
从一开始,出于某种我无法理解的原因,python 没有通过递增数字来对文件夹进行分类,而是使用了一些连接数字或 wathever 的组合。
如果我跑
import os
path = 'D:/wrkfldr/dataset_textures/alot'
i = 0
for _dir in os.listdir(path):
print('%s %d' % (_dir,i))
i += 1
结果是
1
10
100
101
102
103
104
105
106
107
108
109
11
110
111
112
113
114
115
很明显,我的标签完全关闭了,因为我用于标签的 CSV 是制作的,例如第一行代表 0,第二行代表 1,第三行代表 2,依此类推,没有一些可疑的连接东西。
无论如何,我将文件夹名称更改为真实类,一切正常。
推荐阅读
- algorithm - 如何在 AMPL 中写“不等于”或设置变量参数的条件?
- python-2.x - Python2 phoebe2 包
- html - IronPdf 在从 HTML 创建 PDF 时忽略 Bootstrap 列网格
- python - 时间复杂度:删除双端队列的元素
- hyperledger-fabric - Hyperledger Fabric 私有通道是否会创建新的独立账本
- php - 通过 href 限制查询中的项目以进行分页
- html - 无法将表头和搜索框固定在表内
- c - 在 C 中打印出一个没有预定长度的数组
- database - 尝试运行 add-migration 时出现“ScriptHalted”
- generics - 将通用约束设置为多种类型并设置默认值