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的Django REST框架中的序列化及请求和返回
Apr 11 Python
Python实现类似jQuery使用中的链式调用的示例
Jun 16 Python
Python使用自带的ConfigParser模块读写ini配置文件
Jun 26 Python
python使用fcntl模块实现程序加锁功能示例
Jun 23 Python
python入门教程 python入门神图一张
Mar 05 Python
Python单元测试简单示例
Jul 03 Python
浅谈解除装饰器作用(python3新增)
Oct 15 Python
Python @property使用方法解析
Sep 17 Python
Python基础之函数原理与应用实例详解
Jan 03 Python
PyCharm 2020.2.2 x64 下载并安装的详细教程
Oct 15 Python
最新PyCharm从安装到PyCharm永久激活再到PyCharm官方中文汉化详细教程
Nov 17 Python
python3 删除所有自定义变量的操作
Apr 08 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
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
PHP下操作Linux消息队列完成进程间通信的方法
2010/07/24 PHP
关于php mvc开发模式的感想
2011/06/28 PHP
php实现编辑和保存文件的方法
2015/07/20 PHP
十大使用PHP框架的理由
2015/09/26 PHP
PHP编程实现阳历转换为阴历的方法实例
2017/08/08 PHP
PHP多进程编程之僵尸进程问题的理解
2017/10/15 PHP
用jQuery扩展自写的 UI导航
2010/01/13 Javascript
jQuery学习笔记[1] jQuery中的DOM操作
2010/12/03 Javascript
鼠标放在图片上显示大图的JS代码
2013/03/26 Javascript
js二维数组排序的简单示例代码
2014/01/24 Javascript
js检测输入内容全为空格的方法
2014/05/03 Javascript
angular源码学习第一篇 setupModuleLoader方法
2016/10/20 Javascript
移动端基础事件总结与应用
2017/01/12 Javascript
promise处理多个相互依赖的异步请求(实例讲解)
2017/08/03 Javascript
讲解vue-router之命名路由和命名视图
2018/05/28 Javascript
基于Vue2实现简易的省市区县三级联动组件效果
2018/11/05 Javascript
基于React Native 0.52实现轮播图效果
2020/08/25 Javascript
jquery实现自定义树形表格的方法【自定义树形结构table】
2019/07/12 jQuery
python实现封装得到virustotal扫描结果
2014/10/05 Python
Python3标准库总结
2019/02/19 Python
实例讲解Python中整数的最大值输出
2019/03/17 Python
pytorch打印网络结构的实例
2019/08/19 Python
Mac PyCharm中的.gitignore 安装设置教程
2020/04/16 Python
使用sublime text3搭建Python编辑环境的实现
2021/01/12 Python
利用HTML5的新特点实现图片文件异步上传
2014/05/29 HTML / CSS
人力资源部培训专员岗位职责
2014/01/02 职场文书
办公室文员工作职责
2014/01/31 职场文书
委托书的写法
2014/08/30 职场文书
2014领导班子“四风问题”对照检查材料思想汇报(执法局)
2014/09/21 职场文书
教师批评与自我批评剖析材料
2014/10/16 职场文书
2014年医院党建工作总结
2014/12/20 职场文书
未婚证明格式
2015/06/15 职场文书
离职告别感言
2015/08/04 职场文书
军事理论课感想
2015/08/11 职场文书
2015质检员个人年终工作总结
2015/10/23 职场文书