PyTorch加载数据集

PyTorch加载数据集主要涉及两个类——Dataset和Dataloader

Dataset类是提供一种方式去获取数据及其对应的真实的label值,Dataset类是需要我们自己写的。

实现的功能:一如何获取每一个数据及其label;二告诉我们总共有多少个数据

Dataloader类是为后面的网络提供不同的数据形式

举个例子:以垃圾分类来举例,其中垃圾就代表我们所要处理的数据。Dataset类的作用是将一堆垃圾进行分类,并在每一类中对垃圾进行0,1,2,......的编号,并获取具体的label值。Dataloader类的作用是将Dataset类编码之后的数据按照一定的大小(比如batch-size)进行打包

PyTorch加载数据集通常有两种常见的方法:使用自定义数据集和使用预定义数据集。 1. 使用自定义数据集: - 创建一个新的Python类,继承`torch.utils.data.Dataset`,并实现`__len__`和`__getitem__`方法。`__len__`返回数据集的大小,`__getitem__` 根据给定索引返回样本。 - 在`__init__`方法中,根据需求加载数据集并对其进行预处理。 - 可以使用PyTorch提供的各种数据转换方法(例如`torchvision.transforms`)来对数据进行预处理。 - 在训练代码中,实例化自定义数据集类,并使用`torch.utils.data.DataLoader`将数据加载到训练循环中。 下面是一个简单的自定义数据集加载示例: ```python import torch from torch.utils.data import Dataset, DataLoader class CustomDataset(Dataset): def __init__(self, data): self.data = data def __len__(self): return len(self.data) def __getitem__(self, idx): sample = self.data[idx] # 在这里进行数据预处理 return torch.Tensor(sample) # 假设有一个包含样本的列表 data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] dataset = CustomDataset(data) dataloader = DataLoader(dataset, batch_size=2, shuffle=True) for batch in dataloader: # 在这里执行训练循环 print(batch) ``` 2. 使用预定义数据集: - PyTorch提供了一些预定义的数据集,如`torchvision.datasets`模块中的MNIST、CIFAR10等。 - 可以使用预定义数据集的构造函数来加载数据集,并根据需要进行转换和预处理。 - 同样,可以使用`torch.utils.data.DataLoader`将数据加载到训练循环中。 下面是一个预定义数据集加载示例: ```python import torch import torchvision from torchvision import transforms # 定义数据转换和预处理 transform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,)) ]) # 加载MNIST数据集 train_dataset = torchvision.datasets.MNIST(root='./data', train=True, transform=transform, download=True) test_dataset = torchvision.datasets.MNIST(root='./data', train=False, transform=transform) # 使用DataLoader加载数据集 train_dataloader = torch.utils.data.DataLoader(train_dataset, batch_size=64, shuffle=True) test_dataloader = torch.utils.data.DataLoader(test_dataset, batch_size=64, shuffle=False) for batch in train_dataloader: # 在这里执行训练循环 images, labels = batch print(images.shape, labels.shape) ``` 这些是基本的加载数据集的方法,你可以根据自己的需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值