Pytorch DataLoader 变长数据处理方式


Posted in Python onJanuary 08, 2020

关于Pytorch中怎么自定义Dataset数据集类、怎样使用DataLoader迭代加载数据,这篇官方文档已经说得很清楚了,这里就不在赘述。

现在的问题:有的时候,特别对于NLP任务来说,输入的数据可能不是定长的,比如多个句子的长度一般不会一致,这时候使用DataLoader加载数据时,不定长的句子会被胡乱切分,这肯定是不行的。

解决方法是重写DataLoader的collate_fn,具体方法如下:

# 假如每一个样本为:
sample = {
	# 一个句子中各个词的id
	'token_list' : [5, 2, 4, 1, 9, 8],
	# 结果y
	'label' : 5,
}


# 重写collate_fn函数,其输入为一个batch的sample数据
def collate_fn(batch):
	# 因为token_list是一个变长的数据,所以需要用一个list来装这个batch的token_list
  token_lists = [item['token_list'] for item in batch]
  
  # 每个label是一个int,我们把这个batch中的label也全取出来,重新组装
  labels = [item['label'] for item in batch]
  # 把labels转换成Tensor
  labels = torch.Tensor(labels)
  return {
    'token_list': token_lists,
    'label': labels,
  }


# 在使用DataLoader加载数据时,注意collate_fn参数传入的是重写的函数
DataLoader(trainset, batch_size=4, shuffle=True, num_workers=4, collate_fn=collate_fn)

使用以上方法,可以保证DataLoader能Load出一个batch的数据,load出来的东西就是重写的collate_fn函数最后return出来的字典。

以上这篇Pytorch DataLoader 变长数据处理方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在python中的socket模块使用代理实例
May 29 Python
用PyQt进行Python图形界面的程序的开发的入门指引
Apr 14 Python
python读取图片并修改格式与大小的方法
Jul 24 Python
numpy给array增加维度np.newaxis的实例
Nov 01 Python
CentOS 7下安装Python3.6 及遇到的问题小结
Nov 08 Python
django主动抛出403异常的方法详解
Jan 04 Python
python多线程并发及测试框架案例
Oct 15 Python
python实现飞机大战游戏(pygame版)
Oct 26 Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
Apr 03 Python
浅谈keras通过model.fit_generator训练模型(节省内存)
Jun 17 Python
python产生模拟数据faker库的使用详解
Nov 04 Python
python安装sklearn模块的方法详解
Nov 28 Python
pytorch实现用CNN和LSTM对文本进行分类方式
Jan 08 #Python
使用pytorch和torchtext进行文本分类的实例
Jan 08 #Python
python爬虫爬取监控教务系统的思路详解
Jan 08 #Python
Pytorch实现基于CharRNN的文本分类与生成示例
Jan 08 #Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
Jan 08 #Python
Pytorch实现神经网络的分类方式
Jan 08 #Python
python 爬取古诗文存入mysql数据库的方法
Jan 08 #Python
You might like
PHP内核学习教程之php opcode内核实现
2016/01/27 PHP
php实现base64图片上传方式实例代码
2017/02/22 PHP
Laravel实现autoload方法详解
2017/05/07 PHP
textarea的value是html文件源代码,存成html文件的代码
2007/04/20 Javascript
Tinymce+jQuery.Validation使用产生的BUG
2010/03/29 Javascript
jQuery easyui datagrid动态查询数据实例讲解
2013/02/26 Javascript
JS对HTML标签select的获取、添加、删除操作
2013/10/17 Javascript
jquery中的$(document).ready()使用小结
2014/02/14 Javascript
将HTML格式的String转化为HTMLElement的实现方法
2014/08/07 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
jQuery之DOM对象和jQuery对象的转换与区别分析
2015/01/08 Javascript
JavaScript中常用的验证reg
2016/10/13 Javascript
原生js实现旋转木马轮播图效果
2017/02/27 Javascript
javascript使用正则实现去掉字符串前面的所有0
2018/07/23 Javascript
在webstorm开发微信小程序之使用阿里自定义字体图标的方法
2018/11/15 Javascript
JSON字符串操作移除空串更改key/value的介绍
2019/01/05 Javascript
用webAPI实现图片放大镜效果
2020/11/23 Javascript
[00:08]DOTA2勇士令状等级奖励“天外飞星”
2019/05/24 DOTA
处理Python中的URLError异常的方法
2015/04/30 Python
Python的shutil模块中文件的复制操作函数详解
2016/07/05 Python
浅析python协程相关概念
2018/01/20 Python
Centos下实现安装Python3.6和Python2共存
2018/08/15 Python
python2.7实现邮件发送功能
2018/12/12 Python
Python Matplotlib实现三维数据的散点图绘制
2019/03/19 Python
react+django清除浏览器缓存的几种方法小结
2019/07/17 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
2020/08/07 Python
css3 background属性调整增强介绍
2010/12/18 HTML / CSS
Melijoe英国官网:法国儿童时尚网站
2016/11/18 全球购物
Bally巴利中国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/10/09 全球购物
大学毕业通用个人的求职信
2013/12/08 职场文书
《再别康桥》教学反思
2014/02/12 职场文书
班主任个人工作反思
2014/04/28 职场文书
党员个人自我剖析材料
2014/10/08 职场文书
2014年人力资源部工作总结
2014/11/19 职场文书
巾帼文明岗汇报材料
2014/12/24 职场文书
台式电脑蓝牙适配器怎么安装?台式电脑蓝牙适配器安装教程
2022/04/08 数码科技