104_PyTorch 数据心脏:DataLoader 的深度解析与实战
在前面的内容中我们已经解决了“如何找到数据Dataset”和“如何加工数据Transforms”的问题。而DataLoader则是整条流水线的最后一步它负责将处理好的数据高效、有序地“打包”并喂给神经网络。1. 核心概念Dataset vs DataLoaderDataset像是一个仓库管理员它知道每一件货数据在哪里并负责把货取出来。DataLoader像是一个装卸车队它从 Dataset 那里取货然后按批次Batch装车并决定是否要打乱货物的顺序Shuffle。2. DataLoader 的关键参数详解在107_Dataloader使用.ipynb中展示了创建 DataLoader 时最常用的几个核心参数参数含义作用dataset数据集对象告诉 DataLoader 从哪个 Dataset 中取数据。batch_size批大小每次打包多少个数据例如每次取 4 张图。shuffle是否打乱设置为True时每个训练轮次Epoch都会随机打乱数据顺序增加模型泛化能力。num_workers多进程加载设置加载数据使用的子进程数。在 Windows 系统下设为大于 0 的数可能会报错通常设为 0。drop_last是否舍弃尾数如果总数不能被batch_size整除是否舍弃最后余下的不够一个 Batch 的数据。3. 实战演示如何遍历数据加载器代码展示了如何利用torchvision加载测试集并使用DataLoader进行循环读取Pythonimport torchvision from torch.utils.data import DataLoader # 1. 准备数据集 test_data torchvision.datasets.CIFAR10(./dataset, trainFalse, transformtorchvision.transforms.ToTensor()) # 2. 定义加载器每次取 4 张图片打乱顺序 test_loader DataLoader(datasettest_data, batch_size4, shuffleTrue, num_workers0, drop_lastFalse) # 3. 在循环中取出数据 for data in test_loader: imgs, targets data # imgs 现在的形状是 [4, 3, 32, 32] # 在这里将 imgs 喂给模型训练...4. 深度理解Batch 到底是什么当你设置batch_size4时DataLoader 的工作逻辑如下从 Dataset 中依次取出索引为 0, 1, 2, 3 的图片和标签。将这 4 张图片堆叠Stack成一个大的张量Tensor。如果图片尺寸是 $3 \times 32 \times 32$那么这个 Batch 的形状就是 $(4, 3, 32, 32)$。5. 可视化观察TensorBoard使用 TensorBoard 来观察 DataLoader 输出的效果。通过writer.add_images你可以直观地看到每一轮Epoch取出的图片是否被成功打乱了顺序。注意如果在创建test_loader时设置shuffleTrue你会发现第一个 Epoch 打印的第一张图和第二个 Epoch 打印的第一张图是不一样的。总结DataLoader 是连接数据与模型的纽带。通过合理设置batch_size和shuffle我们可以平衡计算效率与训练效果。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2424882.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!