前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【干货】Pytorch中的DataLoader的相关记录

【干货】Pytorch中的DataLoader的相关记录

作者头像
刀刀老高
发布2018-04-10 17:58:48
4.1K0
发布2018-04-10 17:58:48
举报
文章被收录于专栏:奇点大数据奇点大数据

DataLoader简单介绍

DataLoader是Pytorch中用来处理模型输入数据的一个工具类。通过使用DataLoader,我们可以方便地对数据进行相关操作,比如我们可以很方便地设置batch_size,对于每一个epoch是否随机打乱数据,是否使用多线程等等。

咱们先通过下图先来窥探DataLoader的基本处理流程。

1. 首先会将原始数据加载到DataLoader中去,如果需要shuffle的话,会对数据进行随机打乱操作,这样能够输入顺序对于数据的影响。

2. 再使用一个迭代器来按照设置好的batch大小来迭代输出shuffle之后的数据。 Tips: 通过使用迭代器能够有效地降低内存的损耗,会在需要使用的时候才将数据加载到内存中去。

好了,知道了DataLoader的基本使用流程,下面开始正式进入我们的介绍。

使用Dataset来创建自己的数据类

当我们拿到数据之后,首先需要做的就是写一个属于自己的数据类。

我们通过继承torch.utils.data.Dataset这个类来构造。因为Dataset这个类比较简单,我们可以先来看看源码。

其中, __getitem__ 和 __len__ 这两个方法在我们每次自定义自己的类的时候是需要去复写的。

下面结合一个例子来进行介绍:

简单分析如下:

1. 继承Dataset来创建自己的数据类。将数据的下载,加载等,写入到这个类的初始化方法__init__中去,这样后面直接通过创建这个类即可获得数据并直接进行使用。

2. 通过复写 __getitem__ 方法可以通过索引来访问数据,能够同时返回数据和对应的标签(label)。

3. 通过复写 __len__ 方法来获取数据的个数。

使用DataLoader来控制数据的输入输出

结合上一节自己创建的Dataset,DataLoader的使用方式如下:

下面来对DataLoader中的常用参数进行介绍:

  • dataset(Dataset) - 输入自己先前创建好的自己的数据集
  • batch_size(int, optional) - 每一个batch包括的样本数(默认为1)
  • shuffle (bool, optional) - 每一个epoch进行的时候是否要进行随机打乱(默认为False)
  • num_workers(int, optional) - 使用多少个子进程来同时处理数据加载。(默认为0)
  • pin_memory(bool, optional) - 如果为True会将数据放置到GPU上去(默认为false)
  • drop_last (bool, optional) - 如果最后一点数据如果无法满足batch的大小,那么通过设置True可以将最后部分的数据进行丢弃,否则最后一个batch将会较小。(默认为False)

这样,我们就可以通过循环来迭代来高效地获取数据啦。


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-01-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 奇点 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
批量计算
批量计算(BatchCompute,Batch)是为有大数据计算业务的企业、科研单位等提供高性价比且易用的计算服务。批量计算 Batch 可以根据用户提供的批处理规模,智能地管理作业和调动其所需的最佳资源。有了 Batch 的帮助,您可以将精力集中在如何分析和处理数据结果上。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档