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 相关文章推荐
python绘图库Matplotlib的安装
Jul 03 Python
利用Tkinter和matplotlib两种方式画饼状图的实例
Nov 06 Python
Python设计模式之工厂模式简单示例
Jan 09 Python
磁盘垃圾文件清理器python代码实现
Aug 24 Python
Python 多维List创建的问题小结
Jan 18 Python
Python搭建Keras CNN模型破解网站验证码的实现
Apr 07 Python
如何基于Python代码实现高精度免费OCR工具
Jun 18 Python
Python通过fnmatch模块实现文件名匹配
Sep 30 Python
python 匿名函数与三元运算学习笔记
Oct 23 Python
python使用scapy模块实现ARP扫描的过程
Jan 21 Python
基于flask实现五子棋小游戏
May 25 Python
Python图片验证码降噪和8邻域降噪
Aug 30 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
Uncaught exception com_exception with message Failed to create COM object
2012/01/11 PHP
php下载文件,添加响应头的简单实例
2016/09/22 PHP
php 数据结构之链表队列
2017/10/17 PHP
php字符串过滤strip_tags()函数用法实例分析
2019/06/24 PHP
mapper--图片热点区域高亮组件官方站点
2007/12/22 Javascript
jquery 锁定弹出层实现代码
2010/02/23 Javascript
一个简单的JS鼠标悬停特效具体方法
2013/06/17 Javascript
JavaScript插件化开发教程(六)
2015/02/01 Javascript
jQuery替换textarea中换行的方法
2015/06/10 Javascript
基于Bootstrap实现图片轮播效果
2016/05/22 Javascript
javascript简单进制转换实现方法
2016/11/24 Javascript
BootStrap实现轮播图效果(收藏)
2016/12/30 Javascript
flag和jq on 的绑定多个对象和方法(必看)
2017/02/27 Javascript
移动端效果之IndexList详解
2017/10/20 Javascript
微信小程序实现action-sheet弹出底部菜单功能【附源码下载】
2017/12/09 Javascript
详解基于Vue-cli搭建的项目如何和后台交互
2018/06/29 Javascript
vue计算属性computed、事件、监听器watch的使用讲解
2019/01/21 Javascript
layui 数据表格+分页+搜索+checkbox+缓存选中项数据的方法
2019/09/21 Javascript
阿望教你用vue写扫雷小游戏
2020/01/20 Javascript
python抓取并保存html页面时乱码问题的解决方法
2016/07/01 Python
python创建列表和向列表添加元素的实现方法
2017/12/25 Python
Python实现上下班抢个顺风单脚本
2018/02/07 Python
python画图--输出指定像素点的颜色值方法
2019/07/03 Python
处理python中多线程与多进程中的数据共享问题
2019/07/28 Python
Python开发之基于模板匹配的信用卡数字识别功能
2020/01/13 Python
python实现文法左递归的消除方法
2020/05/22 Python
分布式数据库需要考虑哪些问题
2013/12/08 面试题
志愿者活动总结
2014/04/28 职场文书
学校综治宣传月活动总结
2014/07/02 职场文书
思想政治表现评语
2015/01/04 职场文书
导游词范文
2015/02/13 职场文书
学校世界艾滋病日宣传活动总结
2015/05/05 职场文书
2015年行政执法工作总结
2015/05/23 职场文书
九年级化学教学反思
2016/02/22 职场文书
HTML基础详解(上)
2021/10/16 HTML / CSS
各种货币符号快捷输入
2022/02/17 杂记