Pytorch DataLoader 变长数据处理方式
作者:HappyCtest 时间:2022-08-06 23:07:50
关于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出来的字典。
来源:https://blog.csdn.net/HappyCtest/article/details/88872651
标签:Pytorch,DataLoader,变长数据
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Mootools常用方法扩展(三)
2009-01-14 20:07:00
详解Django中的unittest及应用
2022-10-24 08:26:54
asp获取软件下载的真实地址!再谈获取Response.redirect重定向的URL!
2010-03-10 22:03:00
YUV转为jpg图像的实现
2021-07-26 09:18:29
asp函数遍历文件夹代码
2010-06-21 10:38:00
YOLOv8训练自己的数据集(详细教程)
2021-07-12 20:59:18
![](https://img.aspxhome.com/file/2023/6/96986_0s.jpg)
python目标检测yolo1 yolo2 yolo3和SSD网络结构对比
2022-05-24 16:16:39
![](https://img.aspxhome.com/file/2023/6/92156_0s.jpg)
python买卖股票的最佳时机(基于贪心/蛮力算法)
2022-12-26 14:44:24
![](https://img.aspxhome.com/file/2023/1/76891_0s.png)
Python print函数:如何将对象打印输出
2023-03-26 23:07:16
Linux中安装Python的交互式解释器IPython的教程
2023-09-14 05:50:06
Python根据指定日期计算后n天,前n天是哪一天的方法
2022-12-27 19:13:50
MYSQL数据库表设计与优化(二)
2010-10-25 20:12:00
php浅析反序列化结构
2023-11-17 17:34:37
可以输入的下拉菜单
2009-01-04 14:21:00
基于鼠标点击跟踪的用户点击行为分析
2008-04-24 19:22:00
Python爬虫实例扒取2345天气预报
2021-09-27 22:38:12
![](https://img.aspxhome.com/file/2023/4/100284_0s.png)
EXECUTE IMMEDIATE用法小结
2009-09-26 18:32:00
用python统计代码行的示例(包括空行和注释)
2022-06-28 02:15:30
JS实现仿Windows经典风格的选项卡Tab切换代码
2023-08-25 05:33:54
![](https://img.aspxhome.com/file/2023/2/56172_0s.png)
SQL对时间处理的语句小结
2011-12-01 07:53:04