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中urllib模块用法实例详解
Nov 19 Python
Python中使用gzip模块压缩文件的简单教程
Apr 08 Python
python图像处理之镜像实现方法
May 30 Python
Python的Django中将文件上传至七牛云存储的代码分享
Jun 03 Python
Python中定时任务框架APScheduler的快速入门指南
Jul 06 Python
Python实现PS滤镜功能之波浪特效示例
Jan 26 Python
Python数据分析之双色球统计单个红和蓝球哪个比例高的方法
Feb 03 Python
Python延时操作实现方法示例
Aug 14 Python
Django工程的分层结构详解
Jul 18 Python
Python学习笔记之错误和异常及访问错误消息详解
Aug 08 Python
Python unittest基本使用方法代码实例
Jun 29 Python
python PIL模块的基本使用
Sep 29 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 获取select下拉列表框的值
2010/05/08 PHP
php中flush()、ob_flush()、ob_end_flush()的区别介绍
2013/02/17 PHP
PHP中常用的转义函数
2014/02/28 PHP
php输出金字塔的2种实现方法
2014/12/16 PHP
浅谈php中urlencode与rawurlencode的区别
2016/09/05 PHP
JS 对象介绍
2010/01/20 Javascript
JavaScript 原型链学习总结
2010/10/29 Javascript
js固定DIV高度,超出部分自动添加滚动条的简单方法
2013/07/10 Javascript
javascript中RegExp保留小数点后几位数的方法分享
2013/08/13 Javascript
JavaScript中对象属性的添加和删除示例
2014/05/12 Javascript
jQuery寻找n以内完全数的方法
2015/06/24 Javascript
基于jQuery实现的向下滑动二级菜单效果代码
2015/08/31 Javascript
浅谈JavaScript中的对象及Promise对象的实现
2015/11/15 Javascript
JS实现动态生成表格并提交表格数据向后端
2020/11/25 Javascript
jQuery表单验证插件解析(推荐)
2016/07/21 Javascript
使用JS获取SessionStorage的值
2018/01/12 Javascript
关于Webpack dev server热加载失败的解决方法
2018/02/22 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
2019/04/04 Javascript
vue 中 beforeRouteEnter 死循环的问题
2019/04/23 Javascript
开发Node CLI构建微信小程序脚手架的示例
2020/03/27 Javascript
JSONObject与JSONArray使用方法解析
2020/09/28 Javascript
浅谈Python 对象内存占用
2016/07/15 Python
python实现树形打印目录结构
2018/03/29 Python
python使用writerows写csv文件产生多余空行的处理方法
2019/08/01 Python
Django 创建新App及其常用命令的实现方法
2019/08/04 Python
使用python写一个自动浏览文章的脚本实例
2019/12/05 Python
Python Charles抓包配置实现流程图解
2020/09/29 Python
Python中return函数返回值实例用法
2020/11/19 Python
俄罗斯香水和化妆品在线商店:Aroma-butik
2020/02/28 全球购物
室内设计自我鉴定
2013/10/15 职场文书
驻村工作先进事迹
2014/08/14 职场文书
房屋出售授权委托书
2014/10/12 职场文书
个人维稳承诺书
2015/05/04 职场文书
2015年小班保育员工作总结
2015/05/27 职场文书
党组织关系的介绍信模板
2019/06/21 职场文书
Mybatis-plus在项目中的简单应用
2021/07/01 Java/Android