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使用MONGODB入门实例
May 11 Python
python实时分析日志的一个小脚本分享
May 07 Python
python多进程实现进程间通信实例
Nov 24 Python
django 修改server端口号的方法
May 14 Python
在Django model中设置多个字段联合唯一约束的实例
Jul 17 Python
django框架面向对象ORM模型继承用法实例分析
Jul 29 Python
python BlockingScheduler定时任务及其他方式的实现
Sep 19 Python
python super的使用方法及实例详解
Sep 25 Python
Python搭建代理IP池实现接口设置与整体调度
Oct 27 Python
Python-numpy实现灰度图像的分块和合并方式
Jan 09 Python
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
Mar 09 Python
python连接mysql有哪些方法
Jun 24 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整数取余返回负数的相关解决方法
2014/05/15 PHP
Smarty中调用FCKeditor的方法
2014/10/27 PHP
php表单提交实例讲解
2015/11/12 PHP
PHP快速生成各种信息提示框的方法
2016/02/03 PHP
Linux下安装Memcached服务器和客户端与PHP使用示例
2019/04/15 PHP
动态创建的表格单元格中的事件实现代码
2008/12/30 Javascript
JQuery.closest(),parent(),parents()寻找父结点
2012/02/17 Javascript
Json序列化和反序列化方法解析
2013/12/19 Javascript
JavaScript排序算法之希尔排序的2个实例
2014/04/04 Javascript
Visual Studio中js调试的方法图解
2014/06/30 Javascript
js实现Select列表内容自动滚动效果代码
2015/08/20 Javascript
jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表
2015/08/26 Javascript
jQuery简单实现iframe的高度根据页面内容自适应的方法
2016/08/01 Javascript
什么是JavaScript中的结果值?
2016/10/08 Javascript
基于JS递归函数细化认识及实用实例(推荐)
2017/08/07 Javascript
JavaScript分步实现一个出生日期的正则表达式
2018/03/22 Javascript
vue 自定义组件的写法与用法详解
2020/03/04 Javascript
JS实现购物车基本功能
2020/11/08 Javascript
python连接mysql并提交mysql事务示例
2014/03/05 Python
python 动态获取当前运行的类名和函数名的方法
2014/04/15 Python
举例介绍Python中的25个隐藏特性
2015/03/30 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
Python实现App自动签到领取积分功能
2018/09/29 Python
PyQt QListWidget修改列表项item的行高方法
2019/06/20 Python
python使用 request 发送表单数据操作示例
2019/09/25 Python
用Python实现校园通知更新提醒功能
2019/11/23 Python
python3中使用__slots__限定实例属性操作分析
2020/02/14 Python
CSS3实现苹果手机解锁的字体闪亮效果示例
2021/01/05 HTML / CSS
CSS3 filter(滤镜)实现网页灰色或者黑色模式的示例代码
2021/02/24 HTML / CSS
安全生产投入制度
2014/01/29 职场文书
聚美优品陈欧广告词
2014/03/14 职场文书
高效课堂标语
2014/06/26 职场文书
公司员工奖惩制度
2015/08/04 职场文书
Python实现日志实时监测的示例详解
2022/04/06 Python
德劲DE1102数字调谐收音机机评
2022/04/07 无线电
SQL Server使用导出向导功能
2022/04/08 SQL Server