自定义dataset,DataLoader的debug

在这里插入图片描述
1.for i, data in enumerate(train_loader):
在这里插入图片描述
2._SingleProcessDataLoaderIter or _MultiProcessingDataLoaderIter
在这里插入图片描述
在这里插入图片描述
3.进入单进程dataIter中最主要的_next_data()函数,在next中会获取index和data
此函数告诉我们每个iteration都读取哪些数据
在这里插入图片描述
4.光标跳转(最后一个键),进入index = self._next_index()中查看它如何获取index,
点击两次,进入sampler.py(采样器),告诉我们每一个batch_size该读取哪些数据
在这里插入图片描述
5.跳出函数,到_next_data()函数,查看其中data(直接跳转),查看到index为[86, 153, 82, 152, 158, 57, 56, 27, 79, 61, 118, 77, 109, 23, 159, 128]
在这里插入图片描述
6.还是在此有了index会获取data,进入dataset_fetcher
在此fetch.py类中实现了具体的数据读取,第44行中正式调用了dataset
(data拼接成一个list)
在这里插入图片描述
7.步进查看过程,到自定义my_dataset中的getitem,获取数据img和标签label
看看img为tensor:3(RGB)
在这里插入图片描述
在这里插入图片描述
8.跳出,到fetcher.py中的collate_fn,collate_fn为数据整理器,将16个数据整理为一个batch的形式,data为list:16
在这里插入图片描述
9.按第一个键,
在这里插入图片描述
10.返回数据,data是list形式,第一个元素是图像,第二个元素是标签。接下来可以对图像进行训练。
在这里插入图片描述

数据集(Dataset)和数据加载器(DataLoader)是在深度学习中用于处理和加载数据的常用工具。 数据集(Dataset)是一个抽象类,用于表示数据集的抽象概念。它定义了一些必要的方法,如__len__(返回数据集的大小)和__getitem__(根据索引返回单个样本)。你可以根据自己的需求实现一个自定义的数据集类,或使用现有的数据集类(如PyTorch中的torchvision.datasets)。 数据加载器(DataLoader)是一个用于批量加载数据的迭代器。它接收一个数据集作为输入,并根据指定的批量大小、是否打乱数据等参数,将数据划分为若干个批次进行加载。在每个迭代中,数据加载器会返回一个包含批量数据和对应标签的元组。 下面是一个使用PyTorch框架中的DatasetDataLoader的简单示例: ```python import torch from torch.utils.data import Dataset, DataLoader class MyDataset(Dataset): def __init__(self, data): self.data = data def __len__(self): return len(self.data) def __getitem__(self, idx): return self.data[idx] data = [1, 2, 3, 4, 5] dataset = MyDataset(data) dataloader = DataLoader(dataset, batch_size=2, shuffle=True) for batch in dataloader: inputs = batch # 进行模型训练或推理操作 ``` 在上面的示例中,我们首先定义了一个自定义的数据集类MyDataset,然后创建了一个数据集对象dataset。接下来,我们使用DataLoader将数据集划分为批次进行加载,并设置批量大小为2,并打乱数据顺序。最后,我们可以通过迭代数据加载器,获取每个批次的数据进行模型训练或推理操作。 希望能对你有所帮助!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值