首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ImageDataGenerator.flow_from_directory中的图像和标签不匹配

ImageDataGenerator.flow_from_directory中的图像和标签不匹配
EN

Stack Overflow用户
提问于 2021-09-06 16:04:51
回答 1查看 450关注 0票数 0

我想分类大约2000类图像。所以我用了ImageDataGenerator,flow_from_directory。

我制作了主目录和2000子目录。

在主目录(Test1)中

在子目录中

每个子目录有20个图像

(合共约四万张图片)

我用这个脚本检查了生成器。

代码语言:javascript
复制
from tensorflow.keras.preprocessing.image import ImageDataGenerator

trainDataGen = ImageDataGenerator(rescale=1./255)
trainGenSet = trainDataGen.flow_from_directory(
    './test1',
    batch_size=8,
    target_size=(64,64),
    class_mode='categorical',
    color_mode='grayscale'
)
import numpy as np
import matplotlib.pyplot as plt

a = trainGenSet.next()

plt.imshow(a[0][0])
print(np.argmax(a[1][0]))
plt.show()

然后我看了那个不符合标签的图片

A有第300张图片,但a1有1948年!

但发电机运转良好,不到10节课。

我测试了10个类(数字0~9的图像)。

然后发电机就正常工作了!

为什么生成器可以生成少于10个类的正确对,而不能生成超过10个类的正确对呢??

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-06 17:54:34

在flow_from_directory中,您没有指定参数洗牌的值,因此它默认为True。试着把它设为假。还请记住,在python文件和目录中,以字母数字顺序获取。例如,类列表类似于0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,类目录将由生成器按0、1、10、11、12、13、14、15、16、18、2、20、3、4、5、6、7、8、9的顺序获取。这就是为什么当您有超过10个子目录时,顺序不是您所期望的。您可以通过对您的子目录名(如0000 0001 0002 0003等)使用“零”填充来避免这种情况。记住,文件也是按字母数字顺序提取的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69077507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档