pytorch笔记:Dataset 和 DataLoader

简介: pytorch笔记:Dataset 和 DataLoader

PyTorch是一个很受欢迎的深度学习库,提供了很多用于构建神经网络的工具。本文介绍了PyTorch中的Dataset和DataLoader,以及如何使用它们来加载和处理数据。

  1. Dataset

Dataset是一个抽象类,用于表示数据集。在使用PyTorch训练模型时,我们通常需要把数据划分为训练集、验证集和测试集。对于每个数据集,我们需要创建一个对应的Dataset对象。

Dataset类定义了两个方法:

__getitem__(self, index):用于获取指定索引的数据样本。
__len__(self):用于返回数据集的大小。

这两个方法需要在自定义的Dataset子类中进行实现。下面是一个简单的例子,展示了如何创建一个自定义的Dataset子类。

import torch
import torchvision
from torch.utils.data import Dataset, DataLoader

class MNISTDataset(Dataset):
def init(self, data_path):
self.data = torchvision.datasets.MNIST(
root=data_path,
train=True,
transform=torchvision.transforms.ToTensor(),
download=True
)

def __getitem__(self, index):
    x, y = self.data[index]
    return x, y

def __len__(self):
    return len(self.data)

python

在该例中,定义了一个MNISTDataset类,用于加载MNIST数据集。通过torchvision.datasets.MNIST下载并加载MNIST数据集,transform参数指定了数据预处理的方式,这里使用了torchvision.transforms.ToTensor()将数据转换为Tensor类型。getitem方法返回指定索引的数据样本,len方法返回数据集的大小。

  1. DataLoader

DataLoader是一个用于加载数据集的迭代器。它可以方便地对数据集进行批处理(batch)、打乱顺序(shuffle)、并行加载等操作。在使用PyTorch训练模型时,通常需要把大批量的数据加载到内存中,然后将其分成小批量进行训练,DataLoader正是为此而生。

DataLoader类定义了以下参数:

dataset:需要加载的数据集,可以是以上定义的自定义数据集类。
batch_size:每个batch的大小。
shuffle:指定是否打乱数据集。
num_workers:使用多少个进程来进行数据加载。

下面是一个示例,展示了如何使用DataLoader加载数据集:

创建数据集

train_dataset = MNISTDataset(data_path='path/to/mnist')

创建data loader

train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True, num_workers=4)

使用data loader迭代训练数据

for batch_idx, (data, target) in enumerate(train_loader):

# 训练代码
pass

python

在该例中,先创建一个MNISTDataset对象,然后通过DataLoader构造函数将其传入。指定了每个batch的大小为32,打乱数据集,使用4个进程进行数据加载。在使用DataLoader进行数据迭代时,返回的是一个batch的数据和标签,可以直接用于训练。

相关文章
|
6月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【单点知识】基于实例详解PyTorch中的DataLoader类
【单点知识】基于实例详解PyTorch中的DataLoader类
605 2
|
6月前
|
数据采集 PyTorch 算法框架/工具
PyTorch基础之数据模块Dataset、DataLoader用法详解(附源码)
PyTorch基础之数据模块Dataset、DataLoader用法详解(附源码)
997 0
|
PyTorch 算法框架/工具 索引
Pytorch学习笔记(2):数据读取机制(DataLoader与Dataset)
Pytorch学习笔记(2):数据读取机制(DataLoader与Dataset)
693 0
Pytorch学习笔记(2):数据读取机制(DataLoader与Dataset)
|
24天前
|
并行计算 PyTorch TensorFlow
Ubuntu安装笔记(一):安装显卡驱动、cuda/cudnn、Anaconda、Pytorch、Tensorflow、Opencv、Visdom、FFMPEG、卸载一些不必要的预装软件
这篇文章是关于如何在Ubuntu操作系统上安装显卡驱动、CUDA、CUDNN、Anaconda、PyTorch、TensorFlow、OpenCV、FFMPEG以及卸载不必要的预装软件的详细指南。
2106 3
|
23天前
|
机器学习/深度学习 算法 PyTorch
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
这篇文章详细介绍了多种用于目标检测任务中的边界框回归损失函数,包括IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU和WIOU,并提供了它们的Pytorch实现代码。
112 1
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
|
2月前
|
机器学习/深度学习
小土堆-pytorch-神经网络-损失函数与反向传播_笔记
在使用损失函数时,关键在于匹配输入和输出形状。例如,在L1Loss中,输入形状中的N代表批量大小。以下是具体示例:对于相同形状的输入和目标张量,L1Loss默认计算差值并求平均;此外,均方误差(MSE)也是常用损失函数。实战中,损失函数用于计算模型输出与真实标签间的差距,并通过反向传播更新模型参数。
|
6月前
|
存储 数据可视化 PyTorch
PyTorch中 Datasets & DataLoader 的介绍
PyTorch中 Datasets & DataLoader 的介绍
134 0
|
机器学习/深度学习 PyTorch 算法框架/工具
Pytorch使用专题 | 2 :Pytorch中数据读取-Dataset、Dataloader 、TensorDataset 和 Sampler 的使用
介绍Pytorch中数据读取-Dataset、Dataloader 、TensorDataset 和 Sampler 的使用
|
PyTorch 算法框架/工具 索引
Pytorch: 数据读取机制Dataloader与Dataset
Pytorch: 数据读取机制Dataloader与Dataset
236 0
|
机器学习/深度学习 PyTorch 算法框架/工具
Pytorch中如何使用DataLoader对数据集进行批训练
Pytorch中如何使用DataLoader对数据集进行批训练
133 0