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字符串替换示例
Apr 24 Python
python文件操作之目录遍历实例分析
May 20 Python
Python下的Softmax回归函数的实现方法(推荐)
Jan 26 Python
python实现机械分词之逆向最大匹配算法代码示例
Dec 13 Python
解决python使用open打开文件中文乱码的问题
Dec 29 Python
Python装饰器原理与用法分析
Apr 30 Python
tensorflow 输出权重到csv或txt的实例
Jun 14 Python
python的sorted用法详解
Jun 25 Python
pytorch 改变tensor尺寸的实现
Jan 03 Python
设置jupyter中DataFrame的显示限制方式
Apr 12 Python
Python判断变量是否是None写法代码实例
Oct 09 Python
python 模拟登录B站的示例代码
Dec 15 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
PDO防注入原理分析以及使用PDO的注意事项总结
2014/10/23 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
Javascript 原型和继承(Prototypes and Inheritance)
2009/04/01 Javascript
showModelDialog弹出文件下载窗口的使用示例
2013/11/19 Javascript
jquery 实现返回顶部功能
2014/11/17 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
详解JavaScript异步编程中jQuery的promise对象的作用
2016/05/03 Javascript
gulp-htmlmin压缩html的gulp插件实例代码
2016/06/06 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
2016/11/22 Javascript
javascript设计模式之中介者模式学习笔记
2017/02/15 Javascript
Angular如何引入第三方库的方法详解
2017/07/13 Javascript
React如何将组件渲染到指定DOM节点详解
2017/09/08 Javascript
深入浅析ES6 Class 中的 super 关键字
2017/10/20 Javascript
ligerUI---ListBox(列表框可移动的实例)
2017/11/28 Javascript
JS多个异步请求 按顺序执行next实现解析
2019/09/16 Javascript
小程序使用分包的示例代码
2020/03/23 Javascript
Python装饰器decorator用法实例
2014/11/10 Python
python中循环语句while用法实例
2015/05/16 Python
python使用openpyxl库修改excel表格数据方法
2018/05/03 Python
Python面向对象程序设计之继承与多继承用法分析
2018/07/13 Python
python查看列的唯一值方法
2018/07/17 Python
Tensorflow 实现释放内存
2020/02/03 Python
Python如何在循环内使用list.remove()
2020/06/01 Python
新手学python应该下哪个版本
2020/06/11 Python
Python字符串查找基本操作代码案例
2020/10/27 Python
发现世界上最好的珠宝设计师:JewelStreet
2017/12/17 全球购物
英国在线泳装店:Simply Swim
2019/05/05 全球购物
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
俄罗斯购买内衣网站:Trusiki
2020/08/22 全球购物
Linux文件操作命令都有哪些
2016/07/23 面试题
口头翻译求职人自荐信
2013/12/07 职场文书
四风问题班子对照检查材料
2014/09/27 职场文书
二审答辩状范文
2015/05/22 职场文书
亮剑观后感300字
2015/06/05 职场文书
幼儿园小班教师随笔
2015/08/14 职场文书
2016年教师党员创先争优承诺书
2016/03/24 职场文书