Dataset与Dataloader的关系
1. Dataset :指定数的来源
- 将数据导入到内存中
- 提供数据样本的总个数
- 获取某一个样本的方法
2. Dataloader:方便的获取批次数据
- 可以从不同的数据源获取样本数据
- 可以指定每个批次样本的个数
- 获取样本时的步幅大小
- 指定可同时加载数据的子进程数(CPU/2)
- 在否在每轮训练中将数据打乱
Dataset
- 如果是小数据集,Dataset会一次性将全部内容导入内存
- 如果是超大规模数据,则在 __init__中仅记录元信息
- 有哪些文件, 他们存放在那儿, 大小是多少
- 每次都通过 __getitem__获取一个样本(从文件中读)
- 效率问题则由work_num解决, 即多进程并行处理
通过Dataloader获取数据的方式
- 训练时, 我们一般通过for循环从Dataloader中获取数据
- 通过iterater+next获取一个批次的样本, 主要用于验证