DataLoader详解

DataLoader详解对数据集处理虽说很方便但在参数选取和其他的细节方面还容易出问题,尤其是最后一个Batch长度不足,会导致输出维度发生问题,若直接舍去,我还想要全部的数据结果使用方法①创建一个Dataset对象②创建一个DataLoader对象③循环这个DataLoader对象,将xx,xx加载到模型中进行训练train_loader=DataLoader(dataset,batch_size=batch_size,shuffle=shuffle,collate_fn=pad

大家好,又见面了,我是你们的朋友全栈君。

对数据集处理虽说很方便但在参数选取和其他的细节方面还容易出问题,尤其是最后一个Batch长度不足,会导致输出维度发生问题,若直接舍去,我还想要全部的数据结果

DataLoader详解

使用方法

① 创建一个 Dataset 对象
② 创建一个 DataLoader 对象
③ 循环这个 DataLoader 对象,将xx, xx加载到模型中进行训练

train_loader = DataLoader(dataset, batch_size=batch_size, shuffle=shuffle, collate_fn=pad_collate,drop_last=True)

for batch_idx, (features, questions, answers) in enumerate(train_loader):

torch.utils.data.DataLoader(dataset, batch_size=1, shuffle=False, sampler=None,
batch_sampler=None, num_workers=0, collate_fn=None,
pin_memory=False, drop_last=False, timeout=0,

    dataset(Dataset): 传入的数据集
    batch_size(int, optional): 每个batch有多少个样本
    shuffle(bool, optional): 在每个epoch开始的时候,对数据进行重新排序
    sampler(Sampler, optional): 自定义从数据集中取样本的策略,如果指定这个参数,那么shuffle必须为False
    batch_sampler(Sampler, optional): 与sampler类似,但是一次只返回一个batch的indices(索引),需要注意的是,一旦指定了这个参数,那么batch_size,shuffle,sampler,drop_last就不能再制定了(互斥——Mutually exclusive)
    num_workers (int, optional): 这个参数决定了有几个进程来处理data loading。0意味着所有的数据都会被load进主进程。(默认为0)
    collate_fn (callable, optional): 将一个list的sample组成一个mini-batch的函数
    pin_memory (bool, optional): 如果设置为True,那么data loader将会在返回它们之前,将tensors拷贝到CUDA中的固定内存(CUDA pinned memory)中.

    drop_last (bool, optional): 如果设置为True:这个是对最后的未完成的batch来说的,比如你的batch_size设置为64,而一个epoch只有100个样本,那么训练的时候后面的36个就被扔掉了…
    如果为False(默认),那么会继续正常执行,只是最后的batch_size会小一点。

    timeout(numeric, optional): 如果是正数,表明等待从worker进程中收集一个batch等待的时间,若超出设定的时间还没有收集到,那就不收集这个内容了。这个numeric应总是大于等于0。默认为0
    worker_init_fn (callable, optional): 每个worker初始化函数 If not None, this will be called on each
    worker subprocess with the worker id (an int in [0, num_workers – 1]) as
    input, after seeding and before data loading. (default: None)

需要自己构造的有

Dataloader的处理逻辑是先通过Dataset类里面的 __getitem__ 函数获取单个的数据,然后组合成batch,再使用collate_fn所指定的函数对这个batch做一些操作,比如padding啊之类的。

DataLoader详解

 

因为dataloader是有batch_size参数的,我们可以通过自定义collate_fn=myfunction来设计数据收集的方式,意思是已经通过上面的Dataset类中的__getitem__函数采样了batch_size数据,以一个DataLoader详解包的形式传递给collate_fn所指定的函数。

 

参考:根据代码解释,写的也很详细pytorch-DataLoader(数据迭代器)_学渣的博客-CSDN博客_数据迭代器j

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/136280.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月4日 下午1:20
下一篇 2022年5月4日 下午1:20


相关推荐

  • Pycharm设置解释器「建议收藏」

    Pycharm设置解释器「建议收藏」背景:最近需要改文章,增加实验,要把之前的实验跑起来。其间,遇到一个很诡异的问题,在一个工程里跑得很正常的程序,到了另外一个工程里,相似的文件,只是修改了一点参数而已,就会报错,如ModuleNotFoundError:Nomodulenamed’tensorflow.contrib.slim’,当时就怀疑是不是解释器设置问题。由于当时夜黑风高,困意来袭,解释器位置设置竟然也找不到,作罢。第二天直接复制粘贴找问题原因无果。问题:果然是解释器设置问题。默认的解释器是base的python环境,由.

    2022年8月25日
    8
  • 常见Android面试题及答案(详细整理)

    常见Android面试题及答案(详细整理)以下是一些常用的Android面试题及答案,有需要没需要都可以备着,希望能帮到大家。 1.请描述一下Activity生命周期。答:如下图所示。共有七个周期函数,按顺序分别是:onCreate(),onStart(),onRestart(),onResume(),onPause(),onStop(),onDestroy()。onCreate():创建Activit…

    2022年5月21日
    63
  • CACL AI算法挑战

    CACL AI算法挑战CACLCACL CollegeAssoc 高校社团挑战联赛是由 Tesra 超算网络携手人工智能高校联盟共同发起 面向国内外高校 AI 社团的全国性 AI 赛事 联赛以全国高校的 AI 社团为主要参赛对象 为各大高校社团提供一个有趣 有用 高度自治的公平竞赛平台 同时为参赛社团提供技术支持 算力支持 国内外技术专家指导 高校 AI 开发者们在联赛中不但可以共同

    2026年3月19日
    2
  • OpenRouter免费大模型横向评测:2025年主流开源模型性能与应用场景解析

    OpenRouter免费大模型横向评测:2025年主流开源模型性能与应用场景解析

    2026年3月12日
    2
  • 并发量、QPS 和TPS区别

    并发量、QPS 和TPS区别并发量 系统同时处理的 request 事务数 TPS 每秒处理的查询量 每秒钟 request 事务数量个人理解如下 1 Tps 即每秒处理事务数 包括了 1 用户请求服务器 2 服务器自己的内部处理 3 服务器返回给用户这三个过程 每秒能够完成 N 个这三个过程 Tps 也就是 3 转 https blog csdn net liao1990 articl

    2026年3月26日
    2
  • 网站模板 收集[通俗易懂]

    网站模板 收集[通俗易懂]http://www.wzjs.info/bz.asp?classid=130http://www.wzjs.info/网站超市https://www.kuicms.com/魅网https://templets.kui.net/k0001/https://templets.kui.net/k0205/魅网内页(可直接扣)https://www.sitestar.cn/website/combination_templates.aspx?type=all建站之星(可扣)h…

    2022年7月24日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号