【学习】pytorch框架的数据管理—— 理解Dataloader

参考:https://spite-triangle.github.io/artificial_intelligence/#/./README

1.标准数据集

使用:以 CIFAR10 数据集为例,其他数据集类似。

# root:数据存放路径
# train:区分训练集,还是测试集
# transform:对数据集中的图进行预处理
# target_transfrom:对期望输出进行预处理
# download:从网上直接下载数据集
torchvision.datasets.CIFAR10(root: str, train: bool=True, 
        transform=None, 
        target_transform=None, 
        download=False)

2. 自定义数据集

常用的文件路径操作:

rootPath = '..\\asset'
path = '..\\asset\\cat.jpeg'
# 测试路径
os.path.exists(rootPath)
# 文件类型判断
os.path.isfile(path)
os.path.islink(path)
os.path.isdir(path)
# 获取绝对路径 
os.path.abspath(rootPath)
# 罗列出文件夹下的所有文件名
os.listdir(rootPath)
# 路径拼接
os.path.join(rootPath,'cat.jpeg')

数据集:

 class ImgaeAssets(torch.utils.data.Dataset):
     """ 自定义数据集类 """
     def __init__(self,path):
         self.root = path
         self.files = os.listdir(path)
         pass
     def __getitem__(self,id):
         """ 用于数据集中的样本获取 """
         filePath = os.path.join(self.root,self.files[id])
         img = Image.open(filePath)
         return img
     def __len__(self):
         """ 数据的数量 """
         return len(self.files)
 # 创建数据集
 assets = ImgaeAssets('../asset')
 # 获取数据
 img = assets[0]
 img.show()

##重点 Dataloader

  • 作用: 控制数据集 dataSets 的获取

在这里插入图片描述
用 dataloader 将 dataset 中的数据取出打包成 batch 的过程中,会通过 sampler 从 dataset 中取出 batch_size 个样本,然后通过 collect function 将取出的样本整理并打包成最终的 batch。

sampler 获取从 dataset 中获取样本,首先通过 len 获取总样本数,然后根据总样本数生成索引序列(数组的索引号),最后根据索引号通过 getitem 加载真正的样本数据(dataset 只预先加载了数据的文件路径,真正的文件并没直接加载)。

通过 sampler 获取到的数据样本,其实是一个「tuple(tensor) 类型数组」,并非真正的一个 tensor。将 tensor 数组最终整合成一个 tensor 就需要通过 dataset 的 collect function 实现。

# dataset:设置数据集
# batch_size:一个 batch 包含多少样本
# shuffle:下一次 epoch 是否需要将数据打乱,再划分 batch
# drop_last:当最后一个 batch 不具有 batch_size 个样本时,是否需要舍弃
# num_workers:线程数
# collate_fn:自定义 collate_fn
# sampler:自定义采集
torch.utils.data.DataLoader(dataset,batch_size,shuffle=False,drop_last=False,num_workers=0,
                    worker_init_fn,collate_fn,sampler)

相关推荐

  1. PyTorch DataLoader 学习

    2024-03-14 20:52:05       19 阅读
  2. 深度学习-4-PyTorch数据加载器Dataset和DataLoader

    2024-03-14 20:52:05       20 阅读
  3. pytorch学习(四):Dataloader使用

    2024-03-14 20:52:05       32 阅读
  4. pytorch学习3-torchvisin和Dataloader使用

    2024-03-14 20:52:05       57 阅读
  5. [pytorch] 定义自己dataloader

    2024-03-14 20:52:05       56 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-14 20:52:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-14 20:52:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-14 20:52:05       82 阅读
  4. Python语言-面向对象

    2024-03-14 20:52:05       91 阅读

热门阅读

  1. 企业跨境出海选择AWS怎么样?

    2024-03-14 20:52:05       36 阅读
  2. leetcode88--合并两个有序数组

    2024-03-14 20:52:05       44 阅读
  3. intel至强系列CPU以及介绍

    2024-03-14 20:52:05       45 阅读
  4. python中判断是否是数字

    2024-03-14 20:52:05       46 阅读
  5. HDOJ 2041

    2024-03-14 20:52:05       46 阅读
  6. html5&css&js代码 002 50以内的加法算式

    2024-03-14 20:52:05       40 阅读
  7. 大数据面试

    2024-03-14 20:52:05       41 阅读
  8. 使用 @AspectJ 注解配置 Spring AOP

    2024-03-14 20:52:05       38 阅读
  9. 【自学用】B站python爬虫课程笔记(Q11-)

    2024-03-14 20:52:05       43 阅读