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实现的tab文件操作类分享
Nov 20 Python
使用Python发送邮件附件以定时备份MySQL的教程
Apr 25 Python
实例解析Python的Twisted框架中Deferred对象的用法
May 25 Python
Python定时器实例代码
Nov 01 Python
用Django实现一个可运行的区块链应用
Mar 08 Python
python 获取文件下所有文件或目录os.walk()的实例
Apr 23 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
Jun 13 Python
Python实现多属性排序的方法
Dec 05 Python
Python 用turtle实现用正方形画圆的例子
Nov 21 Python
python中文分词库jieba使用方法详解
Feb 11 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
Apr 24 Python
python 中yaml文件用法大全
Jul 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 array_merge下进行数组合并的代码
2008/07/22 PHP
在WAMP环境下搭建ZendDebugger php调试工具的方法
2011/07/18 PHP
php中导出数据到excel时数字变为科学计数的解决方法
2013/02/03 PHP
编写安全 PHP应用程序的七个习惯深入分析
2013/06/08 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
2014/06/19 PHP
PHP通过curl获取接口URL的数据方法
2018/05/31 PHP
jquery 图片预加载 自动等比例缩放插件
2008/12/25 Javascript
jQuery 技巧小结
2010/04/02 Javascript
JS 非图片动态loading效果实现代码
2010/04/09 Javascript
编写高性能的JavaScript 脚本的加载与执行
2010/04/19 Javascript
IE6中使用position导致页面变形的解决方案(js代码)
2011/01/09 Javascript
javascript (用setTimeout而非setInterval)
2011/12/28 Javascript
Javascript 加载和执行-性能提高篇
2012/12/28 Javascript
兼容IE和FF的图片上传前预览js代码
2013/05/28 Javascript
JS比较两个时间大小的简单示例代码
2013/12/20 Javascript
让alert不出现弹窗的两种方法
2014/05/18 Javascript
js 模式窗口(模式对话框和非模式对话框)的使用介绍
2014/07/17 Javascript
jquery中$(#form :input)与$(#form input)的区别
2014/08/18 Javascript
利用Bootstrap Multiselect实现下拉框多选功能
2019/04/08 Javascript
在layui下对元素进行事件绑定的实例
2019/09/06 Javascript
小程序实现录音上传功能
2019/11/22 Javascript
Element Tooltip 文字提示的使用示例
2020/07/26 Javascript
浅谈es6中的元编程
2020/12/01 Javascript
举例讲解Python设计模式编程中的访问者与观察者模式
2016/01/26 Python
pyhanlp安装介绍和简单应用
2019/02/22 Python
python实现字符串加密 生成唯一固定长度字符串
2019/03/22 Python
python基于paramiko将文件上传到服务器代码实现
2019/07/08 Python
Python 根据数据模板创建shapefile的实现
2019/11/26 Python
行政总监岗位职责
2013/12/05 职场文书
小学三年级数学教学反思
2014/01/31 职场文书
同事打架检讨书
2014/02/04 职场文书
十八大演讲稿
2014/05/22 职场文书
2014年图书馆个人工作总结
2014/12/18 职场文书
2015年依法行政工作总结
2015/04/29 职场文书
宝宝满月祝酒词
2015/08/10 职场文书
Python3.10的一些新特性原理分析
2021/09/15 Python