Pytorch: 数据读取机制Dataloader与Dataset

举报
timerring 发表于 2023/07/07 10:38:58 2023/07/07
【摘要】 文章和代码已经归档至【Github仓库:https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 pytorch教程 也可获取。 数据读取机制Dataloader与Dataset数据分为四个模块Sampler:生成索引DataSet:根据索引读取图片及标签。 DataLoader 与 Dataset torch.utils....

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

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。