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 连连看连接算法
Nov 22 Python
Python检测网站链接是否已存在
Apr 07 Python
用python找出那些被“标记”的照片
Apr 20 Python
python+VTK环境搭建及第一个简单程序代码
Dec 13 Python
python-docx修改已存在的Word文档的表格的字体格式方法
May 08 Python
Python基础教程之异常详解
Jan 10 Python
Python 实现王者荣耀中的敏感词过滤示例
Jan 21 Python
python实现点击按钮修改数据的方法
Jul 17 Python
django页面跳转问题及注意事项
Jul 18 Python
django搭建项目配置环境和创建表过程详解
Jul 22 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
Sep 03 Python
python 算法题——快乐数的多种解法
May 27 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/01/22 PHP
php实现curl模拟ftp上传的方法
2015/07/29 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
jquery实现加载等待效果示例
2013/09/25 Javascript
JS对文本框值的判断示例
2014/03/10 Javascript
如何用jquery控制表格奇偶行及活动行颜色
2014/04/20 Javascript
javascript if条件判断方法小结
2014/05/17 Javascript
js实现百度搜索提示框
2017/02/05 Javascript
Vue2.0表单校验组件vee-validate的使用详解
2017/05/02 Javascript
vue.js中$set与数组更新方法
2018/03/08 Javascript
AngularJS中重新加载当前路由页面的方法
2018/03/09 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
基于Webpack4和React hooks搭建项目的方法
2019/02/05 Javascript
记一次vue-webpack项目优化实践详解
2019/02/17 Javascript
javascript移动端 电子书 翻页效果实现代码
2019/09/07 Javascript
微信小程序 自定义弹窗实现过程(附代码)
2019/12/05 Javascript
python 自动提交和抓取网页
2009/07/13 Python
python按照多个字符对字符串进行分割的方法
2015/03/17 Python
Python中音频处理库pydub的使用教程
2017/06/07 Python
总结python中pass的作用
2019/02/27 Python
Python面向对象程序设计之类的定义与继承简单示例
2019/03/18 Python
深入浅析python 协程与go协程的区别
2019/05/09 Python
Python二元赋值实用技巧解析
2019/10/25 Python
使用Python来做一个屏幕录制工具的操作代码
2020/01/18 Python
为什么是 Python -m
2020/06/19 Python
HTML5的结构和语义(1):前言
2008/10/17 HTML / CSS
Java的类与C++的类有什么不同
2014/01/18 面试题
农行实习自我鉴定
2013/09/22 职场文书
大学生个人推荐信范文
2013/11/25 职场文书
医院门卫岗位职责
2013/12/30 职场文书
新闻工作者先进事迹
2014/05/26 职场文书
2014年乡镇领导个人整改措施
2014/09/19 职场文书
小学元宵节活动总结
2015/02/06 职场文书
党员志愿者服务倡议书
2015/04/29 职场文书
河童之夏观后感
2015/06/11 职场文书
创业不要错过,这4种餐饮新模式
2019/07/18 职场文书