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多层装饰器用法实例分析
Feb 09 Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
May 22 Python
flask中的wtforms使用方法
Jul 21 Python
Python中函数参数调用方式分析
Aug 09 Python
python实现汉诺塔算法
Mar 01 Python
对Python中class和instance以及self的用法详解
Jun 26 Python
Python中PyQt5/PySide2的按钮控件使用实例
Aug 17 Python
Python OpenCV实现测量图片物体宽度
May 27 Python
解决pyinstaller打包运行程序时出现缺少plotly库问题
Jun 02 Python
python不同系统中打开方法
Jun 23 Python
python list的index()和find()的实现
Nov 16 Python
python中实现词云图的示例
Dec 19 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中的(伪)多线程与多进程
2013/07/01 PHP
php模拟服务器实现autoindex效果的方法
2015/03/10 PHP
php使用ffmpeg获取视频信息并截图的实现方法
2016/05/03 PHP
Laravel重写用户登录简单示例
2016/10/08 PHP
PHP中的多种加密技术及代码示例解析
2016/10/20 PHP
使用php完成常见的文件上传功能(推荐)
2017/01/13 PHP
Javascript 表单之间的数据传递代码
2008/12/04 Javascript
javaScript 关闭浏览器 (不弹出提示框)
2010/01/31 Javascript
Jquery Uploadify多文件上传带进度条且传递自己的参数
2013/08/28 Javascript
JavaScript中的console.profile()函数详细介绍
2014/12/29 Javascript
bootstrap日历插件datetimepicker使用方法
2016/12/14 Javascript
jQuery实现手机上输入后隐藏键盘功能
2017/01/04 Javascript
微信小程序表单验证错误提示效果
2017/05/19 Javascript
[js高手之路]HTML标签解释成DOM节点的实现方法
2017/08/31 Javascript
vue中Axios的封装与API接口的管理详解
2018/08/09 Javascript
JS使用数组实现的队列功能示例
2019/03/04 Javascript
Python回文字符串及回文数字判定功能示例
2018/03/20 Python
Python+OpenCV实现车牌字符分割和识别
2018/03/31 Python
Python交互环境下实现输入代码
2018/06/22 Python
python虚拟环境迁移方法
2019/01/03 Python
Python实现Singleton模式的方式详解
2019/08/08 Python
使用Tkinter制作信息提示框
2020/02/18 Python
使用python处理题库表格并转化为word形式的实现
2020/04/14 Python
使用Python对Dicom文件进行读取与写入的实现
2020/04/20 Python
使用keras2.0 将Merge层改为函数式
2020/05/23 Python
读取nii或nii.gz文件中的信息即输出图像操作
2020/07/01 Python
如何将json数据转换为python数据
2020/09/04 Python
canvas实现图片镜像翻转的2种方式
2020/07/22 HTML / CSS
英国第一豪华护肤品牌:Elemis
2017/10/12 全球购物
武汉世纪畅想数字传播有限公司 .NET笔试题
2015/06/13 面试题
部队万能检讨书
2014/02/20 职场文书
2015年乡镇信访工作总结
2015/04/07 职场文书
教师节老师寄语
2015/05/28 职场文书
2015年新农村建设指导员工作总结
2015/07/24 职场文书
高并发下Redis如何保持数据一致性(避免读后写)
2022/03/18 Redis
Python+DeOldify实现老照片上色功能
2022/06/21 Python