码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Torch】Dataloader & torch.utils.data.DataLoader全面详实概念理解


    目录

    1.torch.utils.data.DataLoader概念介绍

    2.torch.utils.data.DataLoader参数介绍

    3 案例体会

    DataLoader:[batch_sizeN, C, H, W]+[Target1, Target2, ......., TargetN] ?


    1.torch.utils.data.DataLoader概念介绍

    Data loader. Combines a dataset and a sampler, and provides an iterable over the given dataset.

    • DataLoader是Pytorch中用来处理模型输入数据的一个工具类。
    • 组合了数据集(dataset) + 采样器(sampler),
    • 并在数据集上提供单线程或多线程(num_workers )的可迭代对象。

    只要用PyTorch训练模型,往往都离不开torch.utils.data.DataLoader接口,其主要作用就是将自定义的数据读取接口的输出或者PyTorch已有的数据接口的输入按照batch size分装成Tensor,后续只需要在包装成Variable即可作为模型的输入。

    From:PyTorch源码解读之torch.utils.data.DataLoader 


    2.torch.utils.data.DataLoader参数介绍

    1. torch.utils.data.DataLoader(
    2. dataset,
    3. batch_size=1,
    4. shuffle=False,
    5. sampler=None,
    6. batch_sampler=None,
    7. num_workers=0,
    8. collate_fn=None,
    9. pin_memory=False,
    10. drop_last=False,
    11. timeout=0,
    12. worker_init_fn=None)
    • dataset (Dataset) :加载数据的数据集。
    • batch_size (int, optional) : 每个batch加载多少个样本(默认: 1)。
    • shuffle (bool, optional) :设置为True时会在每个epoch重新打乱数据(默认: False)。
    • sampler (Sampler, optional) : 定义从数据集中提取样本的策略,即生成index的方式,可以顺序也可以乱序。
    • num_workers (int, optional): 用多少个子进程加载数据。0:数据将在主进程中加载(默认: 0)
    • collate_fn (callable, optional) :将一个batch的数据和标签进行合并操作。
    • pin_memory (bool, optional) :设置pin_memory=True,则意味着生成的Tensor数据最开始是属于内存中的锁页内存,这样将内存的Tensor转义到GPU的显存就会更快一些。
    • drop_last (bool, optional):如果数据集大小不能被batch size整除,则设置为True后可删除最后一个不完整的batch。如果设为False并且数据集的大小不能被batch size整除,则最后一个batch将更小。(默认: False)
    • timeout:用来设置数据读取的超时时间的,但超过这个时间还没读取到数据的话就会报错。
    • worker_init_fn(callable, optional):如果不是None,将在播种之后和数据加载之前,对每个worker子进程使用worker id (int in [0, num_workers - 1])作为输入调用。(默认值:None)

    如果设置为多进程读取数据,那么就会采用队列的方式来读,如果不是采用多进程来读取数据,那就采用普通方式来读。


    3 案例体会

    1. #案例 from https://blog.csdn.net/weixin_43981621/article/details/119685671
    2. import torchvision
    3. from torch.utils.data import DataLoader
    4. from torch.utils.tensorboard import SummaryWriter
    5. # 准备的测试数据集 数据放在了CIFAR10文件夹下
    6. test_data = torchvision.datasets.CIFAR10(
    7. "./CIFAR10",
    8. train=False,
    9. transform=torchvision.transforms.ToTensor()
    10. )
    11. test_loader = DataLoader(
    12. dataset=test_data,
    13. batch_size=4,
    14. shuffle=True,
    15. num_workers=0,
    16. drop_last=False
    17. )
    18. # 测试数据集中第一张图片及target
    19. img, target = test_data[0]
    20. print(img.shape)
    21. print(target)
    22. # 输出
    23. torch.Size([3, 32, 32]) # 3表示图像是RGB通道的,32*32的尺寸
    24. 3 # 3表示图像的类别是3
    1. # 设置参数batch_size=4时,每次取了4张照片,并获得4个targets标签。
    2. # 在定义test_loader时,设置了batch_size=4,表示一次性从数据集中取出4个数据
    3. for data in test_loader:
    4. imgs, targets = data
    5. print(imgs.shape)
    6. print(targets)
    7. # 输出
    8. torch.Size([4, 3, 32, 32]) # 4 :batch_size = 4, RGB通道,H,W
    9. tensor([8, 9, 1, 0]) # 表示一次性取出的4张图像的target信息

    PyTorch源码解读之torch.utils.data.DataLoader

    pytorch-DataLoader(数据迭代器)_数据迭代器

    torch.utils.data.DataLoader使用方法

     DataLoader的使用_我这一次的博客-CSDN博客_dataloader

  • 相关阅读:
    基于SqlSugar的开发框架循序渐进介绍(12)-- 拆分页面模块内容为组件,实现分而治之的处理
    2022工作中遇到的问题四
    C/C++ Capstone 引擎源码编译
    工作流引擎选择标准与指南
    SQLite简单介绍
    仿IOS 对话框和底部弹出框
    史上最全MATLAB误差分析工具箱,不看别后悔 【矢量化代码、效率嘎嘎快、支持计算50种指标】
    数据采集:智能制造的基础环节
    python爬虫企业微信打卡数据,写入数据库
    JavaScript系列从入门到精通系列第十五篇:JavaScript中函数的实参介绍返回值介绍以及函数的立即执行
  • 原文地址:https://blog.csdn.net/MengYa_Dream/article/details/126758189
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号