dataloader | cabbage

cabbage

菜鸟写给小白的教程

0%

dataloader

https://blog.csdn.net/qq_53345829/article/details/124308515

pytorch加载图片数据集有两种方法。

orch能处理的数据只能是torch.Tensor,所以有必要将其他数据转换为torch.Tensor。

常见的有几种数据:

np.ndarray
PIL.Image

https://blog.csdn.net/a19990412/article/details/105402341/

创建自己的数据集需要继承父类torch.utils.data.Dataset,同时需要重载两个私有成员函数:def len(self)和def getitem(self, index) 。 def len(self)应该返回数据集的大小;def getitem(self, index)接收一个index,然后返回图片数据和标签,这个index通常指的是一个list的index,这个list的每个元素就包含了图片数据的路径和标签信息。如何制作这个list呢,通常的方法是将图片的路径和标签信息存储在一个txt中,然后从该txt中读取。
https://blog.csdn.net/Vertira/article/details/127482001

https://blog.csdn.net/qq_38683460/article/details/123306447

https://blog.csdn.net/zwy_697198/article/details/123561769

https://blog.csdn.net/qq_41140138/article/details/127084076

Image.open(ImgPath)

https://blog.csdn.net/weixin_43723625/article/details/108158375

3.DataLoader

提供对Dataset的操作,操作如下:

1
2
torch.utils.data.DataLoader(dataset,batch_size,shuffle,drop_last,num_workers)
1

参数含义如下:

  • d a t a s e t \color{HotPink}{dataset}datase**t: 加载torch.utils.data.Dataset对象数据
  • b a t c h _ s i z e \color{HotPink}{batch_size}batc**h_size: 每个batch的大小
  • s h u f f l e \color{HotPink}{shuffle}shuffl**e:是否对数据进行打乱
  • d r o p _ l a s t \color{HotPink}{drop_last}drop_las**t:是否对无法整除的最后一个datasize进行丢弃
  • n u m _ w o r k e r s \color{HotPink}{num_workers}num_work**ers:表示加载的时候子进程数

因此,在实现过程中我们测试如下(紧跟上述用例):

1
2
3
4
5
from torch.utils.data import DataLoader

# 读取数据
datas = DataLoader(torch_data, batch_size=6, shuffle=True, drop_last=False, num_workers=2)
1234

此时,我们的数据已经加载完毕了,只需要在训练过程中使用即可。

4.查看数据

我们可以通过迭代器(enumerate)进行输出数据,测试如下:

1
2
3
for i, data in enumerate(datas):
# i表示第几个batch, data表示该batch对应的数据,包含data和对应的labels
print("第 {} 个Batch \n{}".format(i, data))