前言

之前看了不到pytorch代码,对Dataloader的大部分参数都比较了解,今天看代码时,发现了一个参数collate_fn ,之前论文代码没怎么见过,也就自动忽略了,今天既然遇到了,就突然来了好奇心,想搞清楚用途及用法,以下为正文。

问题及实验

  1. 问题

今天看代码时出现如下问题:

对Dataloader参数中的collate_fn甚感好奇,故想一探究竟。

2. 实验

1):myDataset()类中__getitem__方法返回的数据

代码如下:

测试结果:

可见myDataset()类中__getitem__方法返回值为两个,网络的输入数据为128x40的tensor,输出是个分类标签数据。

2):Dataloader 运行过程

过程:首先Dataloader 会根据batch参数生成一个长度为batch值的列表,列表的值是myDataset()类中__getitem__()的参数,如果shuffle为True ,列表的值就是从0到len(data)中随机抽样索引。然后列表的索引值会依次送入__getitem__()方法,最终返回一个列表的数据,该列表数据会作为collate_fn 函数的参数传入,最终得到一个batch的数据。其中collate_fn 函数可以使用系统默认的也可以使用自己设计的,非常灵活。

debug验证:

程序:

debug1:

进入self._next_data():

index 即为根据batch参数得到的列表:

进入fetch函数:

debug如下:

即fetch函数通过传入index列表得到一个新的列表数据,然后该列表数据通过collate_fn()函数得到最终数据。

--------------------------------------------------------------分割线----------------------------------------------------------

以下无关Dataloarder的使用方法,仅仅是研究以下这里的自定义collate_fn函数的功能。

进入collate_fn函数:

关于zip的拆包功能研究:

测试结果:

通过pad_sequence得到最终结果:

参考文章:

https://blog.csdn.net/dong_liuqi/article/details/114521240

Pytorch之Dataloader参数collate_fn研究相关推荐

  1. python中fn的用法_Pytorch技巧:DataLoader的collate_fn参数使用详解

    DataLoader完整的参数表如下: class torch.utils.data.DataLoader( dataset, batch_size=1, shuffle=False, sampler ...

  2. pytorch中DataLoader的num_workers参数详解与设置大小建议

    Q:在给Dataloader设置worker数量(num_worker)时,到底设置多少合适?这个worker到底怎么工作的? train_loader = torch.utils.data.Data ...

  3. [Pytorch] Sampler, DataLoader和数据batch的形成

    目录 1. 简介 2. 整体流程 3. Sampler和BatchSampler 3.1 Sampler 3.2 BatchSampler 4. DataLoader 4.1 DataLoader 4 ...

  4. pytorch之深入理解collate_fn

    文章目录 前言 dataset dataloader之collate_fn 应用情形 前言 import torch.utils.data as tud collate_fn:即用于collate的f ...

  5. pytorch Dataset, DataLoader产生自定义的训练数据

    pytorch Dataset, DataLoader产生自定义的训练数据 目录 pytorch Dataset, DataLoader产生自定义的训练数据 1. torch.utils.data.D ...

  6. PyTorch 之 DataLoader

    DataLoader DataLoader 是 PyTorch 中读取数据的一个重要接口,该接口定义在 dataloader.py 文件中,该接口的目的: 将自定义的 Dataset 根据 batch ...

  7. Pytorch之DataLoader Dataset、datasets、models、transforms的认识和学习

    文章目录 利用PyTorch框架来开发深度学习算法时几个基础的模块 Dataset & DataLoader 基础概念 自定义数据集 1 读取自定义数据集 1 自定义数据集 2 自定义数据集3 ...

  8. Pytorch载入部分参数并冻结

    参考资料 pytorch 模型部分参数的加载 Pytorch中,只导入部分模型参数的做法 Correct way to freeze layers Pytorch自由载入部分模型参数并冻结 pytor ...

  9. Pytorch 查看模型参数

    Pytorch 查看模型参数 查看利用Pytorch搭建模型的参数,直接看程序 import torch # 引入torch.nn并指定别名 import torch.nn as nn import ...

最新文章

  1. 在CentOS 6.9 x86_64搭建Lua开发环境
  2. 通过学习生物范式,寻找解决AI识别噪音的新方法
  3. 查找命令find的用法
  4. Linux 配置nfs
  5. 实模式和保护模式区别及寻址方式
  6. Flutter VS React Native –为什么我认为Flutter最适合移动应用程序开发
  7. RGB转灰度图的几种算法
  8. .NET Standard中使用TCPListener和TCPClient的高性能TCP客户端服务器
  9. PDE8 wave equation: derivation
  10. 货物贸易外汇监测系统 企业版_企业能耗在线监测系统介绍
  11. hanlp和jieba等六大中文分工具的测试对比
  12. 懒人工作源码分析(1)
  13. php moodle mysql_搭建基于Windows + Apache + PHP + MySQL的Moodle平台
  14. 路由表的下一跳地址如何计算
  15. mumu的adb_MuMu模拟器进行adb操作
  16. 分治算法详解及经典例题
  17. 计算个人所得税的html,实验3-6 计算个人所得税 (10 分)
  18. 阿里云服务器遇到的问题
  19. FFE均衡技术的原理、作用及特点
  20. NLP系列笔记:通俗理解LDA主题模型

热门文章

  1. Android开发:如何隐藏自己的app应用
  2. Windows - 文件系统 学习/收集
  3. 树枝学术 | 图书查找、论文查找全攻略
  4. java8中的lambda表达式实用详解
  5. python获取地图上经纬度_Python从地图上划出经纬度
  6. vue项目运行出现66% buil 98% after emitting CopyPlugin
  7. 万物Linux皆可刷安卓,万物皆可Win,开发者成功在安卓手机刷入Win10系统
  8. htc+m7+android系统+电源,htc one m7 4.4系统获取root权限教程(安卓4.4专用)
  9. 区块链公司BitFury与联合国合作开展哈萨克斯坦的森林项目
  10. vmware+双显示器实现双系统同时使用