Pytorch: 数据读取机制Dataloader与Dataset

文章和代码已经归档至【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。

猜你喜欢

转载自blog.csdn.net/m0_52316372/article/details/131591810