Pytorch dataset 与Dataloader

Dataset

一般使用ImageFolder 自定义数据集,需要重写init()、getitem()、len()方法。将索引与样本进行映射,作为Dataloader的参数。

Dataloader

对数据进行抽样和组装。

参数如下:
dataset (Dataset) – 定义好的Map式或者Iterable式数据集。
batch_size (python:int, optional) 一个batch含有多少样本 (default: 1)。
shuffle (bool, optional) – 每一个epoch的batch样本是相同还是随机 (default: False)。
sampler (Sampler, optional) – 决定数据集中采样的方法. 如果有,则shuffle参数必须为False。
batch_sampler (Sampler, optional) 和 sampler 类似,但是一次返回的是一个batch内所有样本的index。和 batch_size, shuffle, sampler, and drop_last 三个参数互斥。
num_workers (python:int, optional) 多少个子程序同时工作来获取数据,多线程。 (default: 0)
collate_fn (callable, optional) 合并样本列表以形成小批量。
pin_memory (bool, optional) 如果为True,数据加载器在返回前将张量复制到CUDA固定内存中。
drop_last (bool, optional) – 如果数据集大小不能被batch_size整除,设置为True可删除最后一个不完整的批处理。如果设为False并且数据集的大小不能被batch_size整除,则最后一个batch将更小。(default: False)
timeout (numeric, optional) 如果是正数,表明等待从worker进程中收集一个batch等待的时间,若超出设定的时间还没有收集到,那就不收集这个内容了。这个numeric应总是大于等于0。 (default: 0)
worker_init_fn (_callable, optional*) 每个worker初始化函数 (default: None)
dataset 没什么好说的,很重要,需要按照前面所说的两种dataset定义好,完成相关函数的重写。
batch_size 训练的一个批次的样本数。
shuffle 表示每一个epoch中训练样本的顺序是否相同,一般设置为True(不相同)。True则使用RandomSampler,False使用SequenceSampler

Pytorch dataset 与Dataloader_第1张图片

RandomSampler:有放回抽样或者不放回抽样。取决于replace参数,若为True,则为“有放回抽样”。默认为不放回抽样。

Pytorch dataset 与Dataloader_第2张图片
Pytorch dataset 与Dataloader_第3张图片

SequentialSampler:内部使用range(),为顺序抽样。
Pytorch dataset 与Dataloader_第4张图片

Batchsampler:将Sampler生成的索引组装为一个个Batch。
Pytorch dataset 与Dataloader_第5张图片
Pytorch dataset 与Dataloader_第6张图片
参考:Liang’s Bloghttps://chenllliang.github.io

你可能感兴趣的:(pytorch,深度学习,python)