文章和代码曾经归档至【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 思否写作挑战「摸索编码世界之旅 – 记我的第一份编程工作」,欢送正在浏览的你也退出。