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之模拟鼠标键盘动作具体实现
Dec 30 Python
Python使用htpasswd实现基本认证授权的例子
Jun 10 Python
python 实现网上商城,转账,存取款等功能的信用卡系统
Jul 15 Python
Python排序搜索基本算法之冒泡排序实例分析
Dec 09 Python
新手如何发布Python项目开源包过程详解
Jul 11 Python
opencv resize图片为正方形尺寸的实现方法
Dec 26 Python
python 实现PIL模块在图片画线写字
May 16 Python
基于Keras的格式化输出Loss实现方式
Jun 17 Python
pytorch实现查看当前学习率
Jun 24 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
Nov 12 Python
python爬虫selenium模块详解
Mar 30 Python
Python中Numpy和Matplotlib的基本使用指南
Nov 02 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设置页面超时时间解决方法
2015/09/22 PHP
js创建表单元素并使用submit进行提交
2014/08/14 Javascript
Javascript学习笔记之数组的构造函数
2014/11/23 Javascript
DOM基础教程之事件类型
2015/01/20 Javascript
JS实现跟随鼠标立体翻转图片的方法
2015/05/04 Javascript
JS实现队列与堆栈的方法
2016/04/21 Javascript
浅谈AngularJs指令之scope属性详解
2016/10/24 Javascript
详解node.js中的npm和webpack配置方法
2018/01/21 Javascript
vue双向绑定及观察者模式详解
2019/03/19 Javascript
vue跳转方式(打开新页面)及传参操作示例
2020/01/26 Javascript
vue中渲染对象中属性时显示未定义的解决
2020/07/31 Javascript
查看Python安装路径以及安装包路径小技巧
2015/04/28 Python
Python使用base64模块进行二进制数据编码详解
2018/01/11 Python
Python实现抢购IPhone手机
2018/02/07 Python
TensorFlow变量管理详解
2018/03/10 Python
Scrapy框架使用的基本知识
2018/10/21 Python
Django框架中间件(Middleware)用法实例分析
2019/05/24 Python
Python求离散序列导数的示例
2019/07/10 Python
解决Djang2.0.1中的reverse导入失败的问题
2019/08/16 Python
python 协程中的迭代器,生成器原理及应用实例详解
2019/10/28 Python
django框架ModelForm组件用法详解
2019/12/11 Python
查看keras各种网络结构各层的名字方式
2020/06/11 Python
python 爬虫之selenium可视化爬虫的实现
2020/12/04 Python
一款纯css3实现的竖形二级导航的实例教程
2014/12/11 HTML / CSS
利用简洁的图片预加载组件提升html5移动页面的用户体验
2016/03/11 HTML / CSS
HTML5中的Web Notification桌面右下角通知功能的实现
2018/04/19 HTML / CSS
高中生的自我评价
2014/03/04 职场文书
《称象》教学反思
2014/04/25 职场文书
优秀少先队辅导员先进事迹材料
2014/05/18 职场文书
责任书格式范文
2014/07/28 职场文书
党员创先争优心得体会
2014/09/11 职场文书
群众路线教育查摆剖析材料
2014/10/10 职场文书
办公室务虚会发言材料
2014/10/20 职场文书
2015年度电厂个人工作总结
2015/05/13 职场文书
安全生产隐患排查制度
2015/08/05 职场文书
2016年党风廉政建设承诺书
2016/03/25 职场文书