免费做网站安全吗,wordpress模板汉化教程视频,织梦仿asp网站,抚州建设工程网站文章目录 一、前置知识1.dataloader简要介绍2.dataloader 官方文档#xff08;翻译后#xff09; 二、DataLoader的使用 一、前置知识
1.dataloader简要介绍
DataLoader 是 PyTorch 中用于加载数据的实用工具#xff0c;它可以处理数据集的批量加载、数据集的随机打乱、多… 文章目录 一、前置知识1.dataloader简要介绍2.dataloader 官方文档翻译后 二、DataLoader的使用 一、前置知识
1.dataloader简要介绍
DataLoader 是 PyTorch 中用于加载数据的实用工具它可以处理数据集的批量加载、数据集的随机打乱、多进程数据加载等功能。通过使用 DataLoader可以更高效地将数据提供给模型进行训练或推理。
具体来说DataLoader 提供了以下功能
数据批量加载DataLoader 可以将数据集划分为固定大小的批次使得模型可以逐批次地处理数据。
数据集随机打乱在训练模型时通常会希望对数据集进行随机打乱以避免模型学习到数据的顺序性特征。DataLoader 可以在每个周期epoch开始时对数据集进行随机打乱。
多进程数据加载DataLoader 支持多进程数据加载可以加快数据加载速度尤其是当数据预处理耗时较长时。
自定义数据加载顺序可以通过设置 sampler 或 batch_sampler 参数来自定义数据加载的顺序比如指定按照某种策略抽取样本。
2.dataloader 官方文档翻译后 torch.utils.data.DataLoader(dataset, batch_size1, shuffleNone, samplerNone, batch_samplerNone, num_workers0, collate_fnNone, pin_memoryFalse, drop_lastFalse, timeout0, worker_init_fnNone, multiprocessing_contextNone, generatorNone, *, prefetch_factorNone, persistent_workersFalse, pin_memory_device‘’) DataLoader 类结合了数据集和采样器并提供了对给定数据集的可迭代访问。
DataLoader 支持 map-style 和 iterable-style 数据集可以进行单进程或多进程加载自定义加载顺序以及可选的自动分批collation和内存固定。
参数
datasetDataset要加载数据的数据集。 batch_sizeint可选每个批次要加载的样本数默认为 1。 shufflebool可选设置为 True 时每个周期都会对数据进行重新洗牌默认为 False。 samplerSampler 或 Iterable可选定义从数据集中抽取样本的策略。可以是任何实现了 len 方法的可迭代对象。如果指定了 sampler则不能指定 shuffle。 batch_samplerSampler 或 Iterable可选类似于 sampler但一次返回一批索引。与 batch_size、shuffle、sampler 和 drop_last 互斥。 num_workersint可选用于数据加载的子进程数。0 表示数据将在主进程中加载默认为 0。 collate_fnCallable可选合并样本列表以形成 Tensor 的小批量。当从 map-style 数据集进行批处理加载时使用。 pin_memorybool可选如果为 True则数据加载器将在返回数据之前将 Tensor 复制到设备/CUDA 固定内存中。 drop_lastbool可选设置为 True 时如果数据集大小不能被批量大小整除则丢弃最后一个不完整的批次。如果为 False 且数据集的大小不能被批次大小整除则最后一个批次将较小默认为 False。 timeout数值可选如果为正值则为从工作进程收集批次的超时值。应始终为非负数默认为 0。 worker_init_fnCallable可选如果不为 None则会在每个工作进程上调用输入为工作进程的 id范围在 [0, num_workers - 1] 之间在种子化之后数据加载之前使用默认为 None。 multiprocessing_contextstr 或 multiprocessing.context.BaseContext可选如果为 None则使用操作系统的默认多进程上下文默认为 None。 generatortorch.Generator可选如果不为 None则 RandomSampler 将使用此 RNG 生成随机索引多进程用于生成工作进程的基础种子默认为 None。 prefetch_factorint可选仅限关键字参数每个工作进程预先加载的批次数。2 表示所有工作进程总共会预先加载 2 * num_workers 个批次。 persistent_workersbool可选如果为 True则数据加载器在数据集被消耗一次后不会关闭工作进程。这允许保持工作进程的数据集实例处于活动状态默认为 False。 pin_memory_devicestr可选如果 pin_memory 为 True则用于内存固定的设备默认为 “”。
二、DataLoader的使用
代码如下
import torchvision
# 准备测试的数据集
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter# 从CIFAR10导入数据
test_data torchvision.datasets.CIFAR10(./dataset1, trainFalse, transformtorchvision.transforms.ToTensor(), downloadTrue)
# 定义数据加载方式
test_loader DataLoader(datasettest_data, batch_size64, shuffleTrue, num_workers0, drop_lastTrue)# 测试数据集中第一张图片及target
img, target test_data[0]
# print(img)
# print(target)writer SummaryWriter(data_loader)
# 两轮获取数据
for epoch in range(2):step0print(epoch)for data in test_loader:imgs, target data# print(img.shape)# print(target)writer.add_images(Epoch:{}.format(epoch), imgs, step)step step1writer.close()若将shuffle设置为False表示“不洗牌”则两次结果一样 若将shuffle设置为True表示“洗牌”则两次结果不一样