【冷知识】torchvision.datasets.ImageFolder加载类标不正确

这个是最近在分析实验结果才关注到这个问题,发现ImageFloder类加载出来的数据标签和真是标签不同(这个主要是指当您的类别是100类(包含100)以上情况)。这个问题可以通过以下方式进行解决。

1 首先关注Torchvision中的ImageFloder源码

点击进入
在这里插入图片描述

数据集存储的方式(即每个种类对应一个类标文件夹)
在这里插入图片描述

可以注意到源码中,classes的值是通过扫描文件夹得到的,即您的数据集如果是按照ImageNet格式的方式存储,其每个文件夹名称为 “0”,“1”,“2”,…“100”,“101”…"1000"这样的话,明显通过sorted函数,这个时候会对字符串进行排序(升序排列),则明显原来是 “0”,“1”,“2”,…“100”,“101”…“1000”,现在要变为 “0”,“1”,“10”,“100”,“101”,“1000”,“2”,“20”…这个时候通过 class_to_idx 的字典映射时候,就发现类标变为了:.{‘0’: 0, ‘1’: 1, ‘10’: 2, ‘100’: 3, ‘101’: 4, ‘11’: 5, ‘12’: 6, ‘13’: 7, ‘14’: 8, ‘15’: 9…}的情况。

打印自定义数据集的class_to_idx
#定义好dataset之后,
dataset = datasets.ImageFolder(root,transform=transform)
#直接打印 成员变量 class_to_idx 即可
print("*"*10,dataset.class_to_idx)

然后可以根据数据集的具体情况进行后续的操作了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值