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 | torch.utils.data.DataLoader(dataset,batch_size,shuffle,drop_last,num_workers) |
参数含义如下:
- 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 | from torch.utils.data import DataLoader |
此时,我们的数据已经加载完毕了,只需要在训练过程中使用即可。
4.查看数据
我们可以通过迭代器(enumerate)
进行输出数据,测试如下:
1 | for i, data in enumerate(datas): |