DataLoader的基本使用
1. 为什么要使用DataLoader
-
DataLoader对创建好的DataSet的样本取样进行了集成操作,非常方便对于后续网络训练、测试的数据集的选择和使用
-
DataLoader可以集成了数据批量加载的方法,可以使用
batch_size
设置批量大小,DataLoader就会自动处理批量数据的加载,下面给出批量处理的作用- 内存管理:对于需要处理的大量数据,直接投入模型训练是不现实的,小批次处理可以解决这个问题
- 梯度估计的稳定性:小批次梯度估计能够获得更稳定的梯度更新,比整个数据集计算的梯度更快、比单个样本计算的梯度更可靠
- 模型参数更新:小批次运行模型每处理完一个批次就进行参数更新,可以加快模型的训练过程,前期阶段就可以更快地学习到有用特征,减少迭代次数
- 调优更方便:可以灵活调整批次大小,找到适合的训练配置。
- 可以通过不断保存每批次训练后的模型结果,避免代码考虑不周带来的后续模型无法训练的问题
-
DataLoader集成了自动化打乱数据的逻辑代码。确保每个epoch都有不同的数据顺序,
shuffle=True
-
DataLoader处理的DataSet数据,要符合第一章中创建的Dataset类的标准,需要对部分魔法函数进行重写。
class Mydata(Dataset):def __init__(self, ):def __getitem__