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,变长数据
0
投稿

猜你喜欢

  • 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
  • python目标检测yolo1 yolo2 yolo3和SSD网络结构对比

    2022-05-24 16:16:39
  • python买卖股票的最佳时机(基于贪心/蛮力算法)

    2022-12-26 14:44:24
  • 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
  • EXECUTE IMMEDIATE用法小结

    2009-09-26 18:32:00
  • 用python统计代码行的示例(包括空行和注释)

    2022-06-28 02:15:30
  • JS实现仿Windows经典风格的选项卡Tab切换代码

    2023-08-25 05:33:54
  • SQL对时间处理的语句小结

    2011-12-01 07:53:04
  • asp之家 网络编程 m.aspxhome.com