PyTorch 的数据加载是进行深度学习任务的基础。本教程将介绍如何使用 PyTorch 加载数据,并进行一些基本操作。

数据加载方法

PyTorch 提供了多种数据加载方法,以下是一些常用的方法:

  • torch.utils.data.Dataset:自定义数据集
  • torch.utils.data.DataLoader:数据加载器,用于批量加载数据

自定义数据集

要创建一个自定义数据集,你需要继承 torch.utils.data.Dataset 类,并实现以下方法:

  • __init__(self, ...): 初始化函数
  • __len__(self): 返回数据集的长度
  • __getitem__(self, index): 根据索引返回数据

以下是一个简单的自定义数据集示例:

from torch.utils.data import Dataset

class CustomDataset(Dataset):
    def __init__(self, ...):
        # 初始化代码
        pass
    
    def __len__(self):
        return ...
    
    def __getitem__(self, index):
        # 根据索引获取数据
        return ...

数据加载器

数据加载器 DataLoader 可以帮助你批量加载数据,并提供了许多有用的功能,例如:

  • 打乱数据
  • 批量处理
  • 多线程加载数据

以下是如何使用 DataLoader

from torch.utils.data import DataLoader

dataset = CustomDataset(...)
dataloader = DataLoader(dataset, batch_size=32, shuffle=True)

for data in dataloader:
    # 处理数据
    pass

实例:加载 CIFAR-10 数据集

CIFAR-10 是一个常用的图像数据集,包含 10 个类别的 60,000 张 32x32 归一化彩色图像。

以下是如何使用 PyTorch 加载 CIFAR-10 数据集:

import torchvision.datasets as datasets
import torchvision.transforms as transforms

transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
])

train_dataset = datasets.CIFAR10(root='./data', train=True, download=True, transform=transform)
train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True)

更多关于 CIFAR-10 数据集的信息,请访问 CIFAR-10 官网

总结

本教程介绍了 PyTorch 数据加载的基本方法,包括自定义数据集和数据加载器。希望这些信息能帮助你更好地使用 PyTorch 进行深度学习。

PyTorch Logo