torch笔记十四 | ImageFolder & DataLoader
发布日期:2021-05-07 00:10:01 浏览次数:26 分类:精选文章

本文共 1083 字,大约阅读时间需要 3 分钟。

ImageFolder 是一个通用的数据加载器,用于加载图像数据集。在使用该数据加载器之前,需要确保同一类别的图片被组织到同一文件夹中。例如,在猫狗分类任务中,数据集的组织格式如下:

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

ImageFolder 参数

ImageFolder 的构造函数定义如下:

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

常用参数包括:

  • root:指向包含类别文件夹的上一级目录。
  • transform:用于对图片数据进行增强处理。
  • target_transform:用于对图片标签进行预处理,若不传递参数,默认不对标签进行任何转换。

ImageFolder 返回的数据集结构如下:

  • classes:保存类别名称列表,如 ['cat', 'dog']。
  • class_to_idx:保存类别与索引的映射,如 {'cat': 0, 'dog': 1}。
  • imgs:保存图片路径与索引的元组列表。

DataLoader

DataLoader 是一个用于数据加载的工具,用于将大规模数据集分成多个小批量,方便在训练过程中逐批加载数据。其主要用途是:

  • 数据分批:将训练数据分成多个小组。
  • 数据加载:在训练时,逐步加载数据。
  • 数据增强:可通过对数据集应用变换来增加数据多样性。

DataLoader 的构造函数定义如下:

dataloaders = DataLoader(    dataset,    batch_size=1,    shuffle=False,    sampler=None,    num_workers=0,    pin_memory=False,    drop_last=False)

常用参数包括:

  • batch_size:指定每批数据的大小。
  • shuffle:是否对数据进行随机打乱。
  • num_workers:设置读取数据的线程数量,0 表示不使用多线程。
  • pin_memory:将 tensors 直接加载到 GPU 内存中。
  • drop_last:是否丢弃最后一个批次不足 batch_size 的数据。
上一篇:next()和iter()迭代器
下一篇:argparse基本用法

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2025年04月14日 17时54分41秒