Dataloader 基础知识
是PyTorch中数据读取的一个重要接口,该接口定义在pytorch.utils.data.dataloader.py中,目的是:将自定义的Dataset根据batch size大小、是否shuffle等封装成一个Batch Size大小的Tensor,用于后面的训练。
dataloader本质是一个可迭代对象,使用iter()访问,不能使用next()访问
- DataLoader本质上就是一个iterable(跟python的内置类型list等一样),并利用多进程来加速batch data的处理,使用yield来使用有限的内存
- 使用iter(dataloader)返回的是一个迭代器,然后可以使用next访问
- 一般我们实现一个datasets对象,传入到dataloader中;然后内部使用yeild返回每一次batch的数据;
pytorch 的数据加载到模型的操作顺序是这样的
① 创建一个 Dataset 对象
train_dataset = datasets.ImageFolder(root=os.path.join(datapath, "fstrain"),
transform=data_transform["train"])
② 创建一个 DataLoader 对象
train_loader = torch.utils.data.DataLoader(train_dataset,
batch_size=batch_size, shuffle=True,
num_workers=nw)
③ 循环这个 DataLoader 对象,将img, label加载到模型中进行训练
for images, labels in train_loader: