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 中文字符串的处理实现代码
Oct 25 Python
Python实现带参数的用户验证功能装饰器示例
Dec 14 Python
解决pyttsx3无法封装的问题
Dec 24 Python
python实现两张图片拼接为一张图片并保存
Jul 16 Python
Django中使用极验Geetest滑动验证码过程解析
Jul 31 Python
QML使用Python的函数过程解析
Sep 26 Python
关于Pytorch MaxUnpool2d中size操作方式
Jan 03 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
Feb 27 Python
深入分析python 排序
Aug 24 Python
python基于socket模拟实现ssh远程执行命令
Dec 05 Python
Python数据可视化之基于pyecharts实现的地理图表的绘制
Jun 10 Python
python 进阶学习之python装饰器小结
Sep 04 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
PHP中的生成XML文件的4种方法分享
2012/10/06 PHP
php读取图片内容并输出到浏览器的实现代码
2013/08/08 PHP
php教程之魔术方法的使用示例(php魔术函数)
2014/02/12 PHP
php实例分享之通过递归实现删除目录下的所有文件详解
2014/05/15 PHP
PHP 错误处理机制
2015/07/06 PHP
PHP简单的MVC框架实现方法
2015/12/01 PHP
PHP全局变量与超级全局变量区别分析
2016/04/01 PHP
微信支付开发订单查询实例
2016/07/12 PHP
PHP中检索字符串的方法分析【strstr与substr_count方法】
2017/02/17 PHP
JS对文本框值的判断示例
2014/03/10 Javascript
js的Prototype属性解释及常用方法
2014/05/08 Javascript
js进行表单验证实例分析
2015/02/10 Javascript
JavaScript对象属性检查、增加、删除、访问操作实例
2015/07/08 Javascript
使用Javascript实现选择下拉菜单互移并排序
2016/02/23 Javascript
javascript 实现动态侧边栏实例详解
2016/11/11 Javascript
微信小程序 两种滑动方式(横向滑动,竖向滑动)详细及实例代码
2017/01/13 Javascript
深入理解Nodejs Global 模块
2017/06/03 NodeJs
Angular4开发解决跨域问题详解
2017/08/28 Javascript
AngularJs ng-change事件/指令的用法小结
2017/11/01 Javascript
vue在使用ECharts时的异步更新和数据加载详解
2017/11/22 Javascript
详解vuex结合localstorage动态监听storage的变化
2018/05/03 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
2019/04/04 Javascript
详解如何在JS代码中消灭for循环
2019/12/11 Javascript
JavaScript装饰者模式原理与用法实例详解
2020/03/09 Javascript
基于使用paramiko执行远程linux主机命令(详解)
2017/10/16 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
2017/12/19 Python
Python搭建HTTP服务过程图解
2019/12/14 Python
已安装tensorflow-gpu,但keras无法使用GPU加速的解决
2020/02/07 Python
Python逐行读取文件内容的方法总结
2020/02/14 Python
基于python生成英文版词云图代码实例
2020/05/16 Python
CSS3实现可爱的小黄人动画
2016/07/11 HTML / CSS
HTML5微信播放全屏问题的解决方法
2017/03/09 HTML / CSS
小学生关于梦想的演讲稿
2014/08/22 职场文书
2014年辅导员工作总结
2014/11/18 职场文书
会计试用期自我评价
2015/03/10 职场文书
python实现三阶魔方还原的示例代码
2021/04/28 Python