AGPCNet——dataloader()函数

1.dataloader()函数

dataloader()函数是pytorch中读取数据的一个重要接口,基本上用pytorch训练模型都会用到。

这个接口的目的是:

将自定义的dataset根据batch size的大小、是否shuffle等选项封装成一个batch size大小的tensor,后续就只需要在包装成variable即可作为模型的输入进行训练。

数据集如何处理如下:

dataset = MyDataset()
dataloader = DataLoader(dataset)
num_epoches = 100
for epoch in range(num_epoches):
    for img, label in dataloader:
        ....

其中,dataset是数据集,dataloader是对数据集进行封装,最后在使用dataloaderlter进行内部迭代。

函数的构造如下:

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

dataloader()函数的参数如下:

-dataset(dataset):定义要加载的数据集(必须要有的参数)

-batch_size(int,optional):定义batch size的大小,即一次加载样本数量的多少,默认是1

-shuffle(bool,optional):在每个epoch开始的时候是否进行数据的重新排序,默认false

-sampler(sampler,optional):定义从数据集中取样本的策略,如果进行了指定,那么shuffle必须是false

-batch_sampler(sampler,optional):与上一个参数sample相似,但是一次只返回一个batch索引(indices),该参数与batch size、shuffle、sampler、drop last互斥,即设置了此参数,其他四个参数不能设定。

-num_workers(int,optional):定义加载数据使用的进程数,0代表所有的数据都被装载进主进程里面,默认是0

-collate_fn(callable*,*optional):将一个list的sampler组合形成一个mini-batch的函数

-pin_memory(bool,optional):如果设定为True,那么data loader在返回之前会将tensors拷贝到cuda中的固定内存

-drop_last(bool,optional):这是对最后一个未完成的batch来说的,比如你的batch size设置的为64,而一个epoch只有一百个样本,如果设置的为True,那么这一百个样本的后面36个样本就会被扔掉。如果设置的为False(默认值),那么就会继续执行,只是最后一个batch size会小一些

-timeout(numeric,optional):如果是正数,就表示从worker进程中收集一个batch等待的时间,如果超出设定的时间还没有收集到,那就不会进行这个内容的收集了。这个numeric总是大于等于0的。默认值为0

-worker_init_fn(callable,optional):每一个worker的初始化函数,如果设置成none,则会在数据加载之前,在每一个worker的子进程上面调用它,并且将worker id(【0,num_workers-1】)作为输入。默认值无。

dataloader()函数的使用方法:

train_data  = trainset()  #数据集
trainloader = DataLoader(train_data, batch_size=4,shuffle=True) #加载数据集,设定参数

参考链接:

https://blog.csdn.net/lipengfei0427/article/details/109547241?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165458227316781483758839%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165458227316781483758839&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-109547241-null-null.142^v11^pc_search_result_control_group,157^v13^control&utm_term=Data.DataLoader&spm=1018.2226.3001.4187icon-default.png?t=M4ADhttps://blog.csdn.net/lipengfei0427/article/details/109547241?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165458227316781483758839%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165458227316781483758839&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-109547241-null-null.142^v11^pc_search_result_control_group,157^v13^control&utm_term=Data.DataLoader&spm=1018.2226.3001.4187

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