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 字符串中的字符倒转
Sep 06 Python
Python 基础知识之字符串处理
Jan 06 Python
Python Grid使用和布局详解
Jun 30 Python
python+opencv实现霍夫变换检测直线
Oct 23 Python
详解python中TCP协议中的粘包问题
Mar 22 Python
pytorch::Dataloader中的迭代器和生成器应用详解
Jan 03 Python
Python 输出详细的异常信息(traceback)方式
Apr 08 Python
详解如何修改python中字典的键和值
Sep 29 Python
pytorch 权重weight 与 梯度grad 可视化操作
Jun 05 Python
Python基于百度API识别并提取图片中文字
Jun 27 Python
python实现简易自习室座位预约系统
Jun 30 Python
pandas中关于apply+lambda的应用
Feb 28 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
Windows2003 下 MySQL 数据库每天自动备份
2006/12/21 PHP
PHP序列号生成函数和字符串替换函数代码
2012/06/07 PHP
php foreach正序倒序输出示例代码
2014/07/01 PHP
PHP session文件独占锁引起阻塞问题解决方法
2015/05/12 PHP
php 流程控制switch的简单实例
2016/06/07 PHP
Laravel + Elasticsearch 实现中文搜索的方法
2020/02/02 PHP
用js来获取上传的文件名纯粹是为了美化而用
2013/10/23 Javascript
jquery给图片添加鼠标经过时的边框效果
2013/11/12 Javascript
自己封装的常用javascript函数分享
2015/01/07 Javascript
jQuery密码强度检测插件passwordStrength用法实例分析
2015/10/30 Javascript
AngularJs动态加载模块和依赖注入详解
2016/01/11 Javascript
js实现div模拟模态对话框展现URL内容
2016/05/27 Javascript
最好用的Bootstrap fileinput.js文件上传组件
2016/12/12 Javascript
AngularJS实现的省市二级联动功能示例【可对选项实现增删】
2017/10/26 Javascript
解决Vue-cli npm run build生产环境打包,本地不能打开的问题
2018/09/20 Javascript
Vue CLI3中使用compass normalize的方法
2019/05/30 Javascript
vue悬浮可拖拽悬浮按钮的实例代码
2019/08/20 Javascript
python连接远程ftp服务器并列出目录下文件的方法
2015/04/01 Python
在Windows中设置Python环境变量的实例讲解
2018/04/28 Python
详解python中递归函数
2019/04/16 Python
Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】
2019/05/05 Python
keras 特征图可视化实例(中间层)
2020/01/24 Python
Python3变量与基本数据类型用法实例分析
2020/02/14 Python
基于Python获取docx/doc文件内容代码解析
2020/02/17 Python
简单介绍一下pyinstaller打包以及安全性的实现
2020/06/02 Python
浅析HTML5 Landmark
2020/09/11 HTML / CSS
美国按摩椅批发网站:Titan Chair
2018/12/27 全球购物
.net面试题
2016/09/17 面试题
Ruby如何创建一个线程
2013/03/10 面试题
学校七一活动方案
2014/01/19 职场文书
个人遵守党的政治纪律情况对照检查材料思想汇报
2014/09/25 职场文书
村当支部个人对照检查材料思想汇报
2014/10/06 职场文书
2014年老干部工作总结
2014/11/21 职场文书
紧急迫降观后感
2015/06/15 职场文书
读《儒林外史》有感:少一些功利,多一些真诚
2020/01/19 职场文书
golang 实现对Map进行键值自定义排序
2021/04/28 Golang