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装饰器使用实例:验证参数合法性
Jun 24 Python
python 的列表遍历删除实现代码
Apr 12 Python
win7上python2.7连接mysql数据库的方法
Jan 14 Python
Python实现Logger打印功能的方法详解
Sep 01 Python
从0开始的Python学习016异常
Apr 08 Python
windows下python虚拟环境virtualenv安装和使用详解
Jul 16 Python
Python实现滑动平均(Moving Average)的例子
Aug 24 Python
python3实现往mysql中插入datetime类型的数据
Mar 02 Python
Python semaphore evevt生产者消费者模型原理解析
Mar 18 Python
django model的update时auto_now不被更新的原因及解决方式
Apr 01 Python
在python image 中实现安装中文字体
May 16 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
Jul 01 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 判断常量,变量和函数是否存在
2009/04/26 PHP
php写的带缓存数据功能的mysqli类
2012/09/06 PHP
PHP编程函数安全篇
2013/01/08 PHP
php代码中使用换行及(\n或\r\n和br)的应用
2013/02/02 PHP
php读取二进制流(C语言结构体struct数据文件)的深入解析
2013/06/13 PHP
php中HTTP_REFERER函数用法实例
2014/11/21 PHP
php保存信息到当前Session的方法
2015/03/16 PHP
php 数组元素快速去重
2017/05/05 PHP
Laravel实现定时任务的示例代码
2017/08/10 PHP
ajax更新数据后,jquery、jq失效问题
2011/03/16 Javascript
IE事件对象(The Internet Explorer Event Object)
2012/06/27 Javascript
JavaScript将Table导出到Excel实现思路及代码
2013/03/13 Javascript
把input初始值不写value的具体实现方法
2013/07/04 Javascript
jquery中添加属性和删除属性
2015/06/03 Javascript
JavaScript操作XML文件之XML读取方法
2015/06/09 Javascript
Javascript控制div属性动态变化实例分析
2015/10/08 Javascript
jquery判断复选框选中状态以及区分attr和prop
2015/12/18 Javascript
JavaScript严格模式详解
2017/01/16 Javascript
vue使用监听实现全选反选功能
2018/07/06 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
2018/09/28 Javascript
快速对接payjq的个人微信支付接口过程解析
2019/08/15 Javascript
JS实现长图上下滚动效果
2020/03/19 Javascript
[51:50]完美世界DOTA2联赛 Magma vs GXR 第一场 11.07
2020/11/10 DOTA
Python实现partial改变方法默认参数
2014/08/18 Python
python设计模式大全
2016/06/27 Python
Python set常用操作函数集锦
2017/11/15 Python
浅谈python连续赋值可能引发的错误
2018/11/10 Python
flask 实现上传图片并缩放作为头像的例子
2020/01/09 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
2020/04/13 Python
HTML5 本地存储 LocalStorage详解
2016/06/24 HTML / CSS
Perricone MD裴礼康美国官网:抗衰老护肤品
2016/09/26 全球购物
法国房车租赁网站:Yescapa
2019/08/26 全球购物
《乞巧》教学反思
2014/02/27 职场文书
自荐信的格式
2014/03/10 职场文书
领导个人查摆剖析材料
2014/10/29 职场文书
一文教你快速生成MySQL数据库关系图
2022/06/28 Redis