pytorch中如何使用DataLoader对数据集进行批处理的方法


Posted in Python onAugust 06, 2019

最近搞了搞minist手写数据集的神经网络搭建,一个数据集里面很多个数据,不能一次喂入,所以需要分成一小块一小块喂入搭建好的网络。

pytorch中有很方便的dataloader函数来方便我们进行批处理,做了简单的例子,过程很简单,就像把大象装进冰箱里一共需要几步?

第一步:打开冰箱门。

我们要创建torch能够识别的数据集类型(pytorch中也有很多现成的数据集类型,以后再说)。

首先我们建立两个向量X和Y,一个作为输入的数据,一个作为正确的结果:

pytorch中如何使用DataLoader对数据集进行批处理的方法

随后我们需要把X和Y组成一个完整的数据集,并转化为pytorch能识别的数据集类型:

pytorch中如何使用DataLoader对数据集进行批处理的方法

我们来看一下这些数据的数据类型:

pytorch中如何使用DataLoader对数据集进行批处理的方法

可以看出我们把X和Y通过Data.TensorDataset() 这个函数拼装成了一个数据集,数据集的类型是【TensorDataset】。

好了,第一步结束了,冰箱门打开了。

第二步:把大象装进去。

就是把上一步做成的数据集放入Data.DataLoader中,可以生成一个迭代器,从而我们可以方便的进行批处理。

pytorch中如何使用DataLoader对数据集进行批处理的方法

DataLoader中也有很多其他参数:

  1. dataset:Dataset类型,从其中加载数据
  2. batch_size:int,可选。每个batch加载多少样本
  3. shuffle:bool,可选。为True时表示每个epoch都对数据进行洗牌
  4. sampler:Sampler,可选。从数据集中采样样本的方法。
  5. num_workers:int,可选。加载数据时使用多少子进程。默认值为0,表示在主进程中加载数据。
  6. collate_fn:callable,可选。
  7. pin_memory:bool,可选
  8. drop_last:bool,可选。True表示如果最后剩下不完全的batch,丢弃。False表示不丢弃。

好了,第二步结束了,大象装进去了。

第三步:把冰箱门关上。

好啦,现在我们就可以愉快的用我们上面定义好的迭代器进行训练啦。

在这里我们利用print来模拟我们的训练过程,即我们在这里对搭建好的网络进行喂入。

pytorch中如何使用DataLoader对数据集进行批处理的方法

输出的结果是:

pytorch中如何使用DataLoader对数据集进行批处理的方法

可以看到,我们一共训练了所有的数据训练了5次。数据中一共10组,我们设置的mini-batch是3,即每一次我们训练网络的时候喂入3组数据,到了最后一次我们只有1组数据了,比mini-batch小,我们就仅输出这一个。

此外,还可以利用python中的enumerate(),是对所有可以迭代的数据类型(含有很多东西的list等等)进行取操作的函数,用法如下:

pytorch中如何使用DataLoader对数据集进行批处理的方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
pymongo给mongodb创建索引的简单实现方法
May 06 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
Mar 11 Python
详解python-图像处理(映射变换)
Mar 22 Python
python区块及区块链的开发详解
Jul 03 Python
django获取from表单multiple-select的value和id的方法
Jul 19 Python
pytest中文文档之编写断言
Sep 12 Python
python、PyTorch图像读取与numpy转换实例
Jan 13 Python
Python定义函数实现累计求和操作
May 03 Python
Pytest如何使用skip跳过执行测试
Aug 13 Python
Python 如何查找特定类型文件
Aug 17 Python
python Selenium 库的使用技巧
Oct 16 Python
pytorch 中nn.Dropout的使用说明
May 20 Python
django foreignkey外键使用的例子 相当于left join
Aug 06 #Python
Python Django简单实现session登录注销过程详解
Aug 06 #Python
Django框架中序列化和反序列化的例子
Aug 06 #Python
python异常触发及自定义异常类解析
Aug 06 #Python
Python DataFrame一列拆成多列以及一行拆成多行
Aug 06 #Python
Django中reverse反转并且传递参数的方法
Aug 06 #Python
matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)
Aug 06 #Python
You might like
JQueryEasyUI datagrid框架的进阶使用
2013/04/08 Javascript
js自动下载文件到本地的实现代码
2013/04/28 Javascript
Jquery实现图片左右自动滚动示例
2013/09/25 Javascript
js判断页面中是否有指定控件的简单实例
2014/03/04 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
2015/01/13 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
2015/08/04 Javascript
jQuery实用技巧必备(下)
2015/11/03 Javascript
把多个JavaScript函数绑定到onload事件处理函数上的方法
2016/09/04 Javascript
jquery validate表单验证插件
2016/09/06 Javascript
详解升级react-router 4 踩坑指南
2017/08/14 Javascript
在Swiper内如何制作CSS3动画效果示例代码
2017/12/07 Javascript
NodeJs 文件系统操作模块fs使用方法详解
2018/11/26 NodeJs
微信小程序地图导航功能实现完整源代码附效果图(推荐)
2019/04/28 Javascript
js实现图片粘贴到网页
2019/12/06 Javascript
es6中Promise 对象基本功能与用法实例分析
2020/02/23 Javascript
详解vue中在循环中使用@mouseenter 和 @mouseleave事件闪烁问题解决方法
2020/04/07 Javascript
关于JavaScript数组去重的一些理解汇总
2020/09/10 Javascript
微信小程序实现翻牌抽奖动画
2020/09/21 Javascript
Vue+Openlayers自定义轨迹动画
2020/09/24 Javascript
使用Protocol Buffers的C语言拓展提速Python程序的示例
2015/04/16 Python
Python将多个list合并为1个list的方法
2018/06/27 Python
pycharm 解除默认unittest模式的方法
2018/11/30 Python
python中强大的format函数实例详解
2018/12/05 Python
使用python Telnet远程登录执行程序的方法
2019/01/26 Python
Python基于OpenCV实现人脸检测并保存
2019/07/23 Python
Python判断字符串是否为合法标示符操作
2020/09/03 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
2020/11/24 Python
CSS实现雨滴动画效果的实例代码
2019/10/08 HTML / CSS
程序员岗位职责
2013/11/11 职场文书
四年的大学生生活自我评价
2013/12/09 职场文书
《鞋匠的儿子》教学反思
2014/03/02 职场文书
小学生作文评语
2014/04/18 职场文书
明星员工获奖感言
2014/08/14 职场文书
2014年精神文明工作总结
2014/12/23 职场文书
CSS的class与id常用的命名规则
2021/05/18 HTML / CSS
JavaScript高级程序设计之基本引用类型
2021/11/17 Javascript