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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 浏览器清理缓存的几种方法

    浏览器清理缓存的几种方法一.为什么使用缓存简单的说,就是为了让页面加载的更快一点,通过将部分静态资源保存到本地这种方式,从而减少网络请求,提升用户体验的一种手段。二.使用缓存有什么弊端凡事有利必有弊,缓存也是。使用缓存

  • 什么是大数据架构?需要学什么内容?[通俗易懂]

    什么是大数据架构?需要学什么内容?[通俗易懂]大数据架构设计用来处理对传统数据库系统而言太大或太复杂的数据的引入、处理和分析。组织进入大数据领域的门槛各不相同,具体取决于用户的权限及其工具的功能。对某些组织来说,大数据可能意味着数百个GB的数据,而对另一些组织来说,大数据则意味着数百个TB的数据。随着处理大数据集的工具的发展,大数据的涵义也在不断地变化。慢慢地,这个术语更多的是指通过高级分析从数据集获取的价值,而不是严格地指数据的大小…

  • 屏幕像素密度

    屏幕像素密度屏幕像素密度含义:每英寸的像素点数 单位:dpi(dotsperich) 假设设备内每英寸有160个像素,那么该设备的屏幕像素密度=160dpi 安卓手机对于每类手机屏幕大小都有一个相应的屏幕像素密度:密度类型 代表的分辨率(px) 屏幕像素密度(dpi) 低密度(ldpi) 240×320 120 中密度(mdpi) 320×48…

  • 第四次实训「建议收藏」

    第四次实训「建议收藏」第四次实训

  • python批量重命名图片序号_python实现图片文件批量重命名「建议收藏」

    python批量重命名图片序号_python实现图片文件批量重命名「建议收藏」本文实例为大家分享了python实现文件批量重命名的具体代码,供大家参考,具体内容如下代码:#-*-coding:utf-8-*-importosclassImageRename():def__init__(self):self.path=’D:/xpu/paper/plate_data’defrename(self):filelist=os.listdir(self.pat…

  • codeblocks中文编码问题

    codeblocks中文编码问题其实这是老调重弹的问题了,在windows下面出现中文乱码大多都是编码格式的问题不一致的问题,最简单的就是uft-8和gbk冲突的问题。如果一个文件本来是以utf-8存的,但是以gbk打开,当然会出现乱码了。方法一:用utf-8打开文件linux中中文常用的格式是utf-8,minGW是gcc的编译器,默认是utf-8格式,但是我们打开Setting/Editor/EncodingSetting

发表回复

您的电子邮箱地址不会被公开。

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