关于challenge:Pytorch-数据读取机制Dataloader与Dataset

43次阅读

共计 899 个字符,预计需要花费 3 分钟才能阅读完成。

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

本文参加了 SegmentFault 思否写作挑战「摸索编码世界之旅 – 记我的第一份编程工作」,欢送正在浏览的你也退出。

正文完
 0