写点什么

Pytorch: 数据读取机制 Dataloader 与 Dataset

作者:timerring
  • 2023-07-07
    山东
  • 本文字数:595 字

    阅读完需:约 2 分钟

文章和代码已经归档至【Github 仓库:https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 pytorch 教程 也可获取。

数据读取机制 Dataloader 与 Dataset


数据分为四个模块



Sampler:生成索引


DataSet:根据索引读取图片及标签。

DataLoader 与 Dataset

torch.utils.data.DataLoader


功能:构建可迭代的数据装载器


  • dataset : Dataset 类,决定数据从哪读取及如何读取

  • batchsize : 批大小

  • num_works : 是否多进程读取数据(减少时间,加速模型训练)

  • shuffle:每个 epoch 是否乱序

  • drop_last :当样本数不能被 batchsize 整除时,是否舍弃最后一批数据

区分 Epoch、Iteration、Batchsize

Epoch: 所有训练样本都已输入到模型中,称为一个 Epoch


Iteration:一批样本输入到模型中,称之为一个 Iteration


Batchsize:批大小,决定一个 Epoch 有多少个 Iteration


样本总数: 80 Batchsize 8

1 Epoch = 10 Iteration


样本总数: 87 Batchsize 8

1 Epoch = 10 Iteration?drop_last = True

1 Epoch = 11 Iteration?drop_last = False

torch.utils.data.Dataset


功能:


Dataset 抽象类,所有自定义的 Dataset 需要继承它,并且复写_getitem_()


getitem:接收一个索引,返回一个样本

关于读取数据


通过 debug 详解数据的读取过程


DataLoader 根据是否采用多进程,进入 DataLoaderIter,使用 Sampler 获取 index,再通过索引调用 DatasetFetcher,在硬盘中读取 imgandLabel,通过 collate_fn 整理成一个 batchData。



发布于: 刚刚阅读数: 3
用户头像

timerring

关注

公众号【AIShareLab】 2022-07-14 加入

他日若遂凌云志

评论

发布
暂无评论
Pytorch: 数据读取机制Dataloader与Dataset_人工智能_timerring_InfoQ写作社区