当前位置: 代码迷 >> 综合 >> torch笔记十四 | ImageFolder DataLoader
  详细解决方案

torch笔记十四 | ImageFolder DataLoader

热度:40   发布时间:2023-12-14 22:00:46.0

ImageFolder

一、数据集整理

ImageFolder是一个通用的数据加载器,加载数据的之前,需要我们提前把同一类别的图片放到一个文件夹中。例如在猫狗分类中,以下面这种格式来组织数据集的训练、验证或者测试图片。

root/dog/xxx.png
root/dog/xxy.png
root/dog/xxz.pngroot/cat/123.png
root/cat/nsdf3.png
root/cat/asd932_.png

二、ImageFolder的参数

dataset=torchvision.datasets.ImageFolder(root, transform=None, target_transform=None, loader=<function default_loader>, is_valid_file=None)

常用参数:

  • root :为类别文件夹的上一级目录
  • transform:是图片数据增强的方式
  • target_transform:对图片的label进行预处理的操作,如果不传该参数,即对 target 不做任何转换,返回的顺序索引 0,1, 2…

返回的dataset:

  • dataset 的结构: [(img_data,class_id),(img_data,class_id),…]
  • dataset.classes:保存类别名称的列表 [‘cat’, ‘dog’]
  • dataset.class_to_idx:类别对应的索引 {‘cat’: 0, ‘dog’: 1}
  • dataset.imgs:保存 (图片路径, 索引) 元组的列表

DataLoader

一、用途

Dataloader 就是一个数据加载器,可以在训练的时候,把训练数据分成多个小组,每次抛出一组数据,直至把所有的数据都抛出。

二、DataLoader的参数

dataloaders = Data.DataLoader(dataset,			# 需要导入的数据集batch_size=1, 	# 一批多少个数据shuffle=False, 	# 是否打乱顺序sampler=None, 	# 取样器,从dataset中抽取数据的策略(使用时shuffle必须为False)num_workers=0, 	# 使用多线程读取数据,0表示不使用多线程(Windows系统)pin_memory=False,	# 将tensor放到cudadrop_last=False)	# dataset中最后不足一个batch的数据是否丢掉
  相关解决方案