【pytorch】dataset类的使用

一、dataset定义

在PyTorch中,Dataset是数据加载的核心抽象类,其使用流程主要分为自定义数据集和数据加载器配置两部分。

方法的说明:

meth:__getitem__根据索引返回单个样本及其标签。

meth:__len__返回数据集样本总数。

python 复制代码
class Dataset(Generic[T_co]):
    r"""An abstract class representing a :class:`Dataset`.

    All datasets that represent a map from keys to data samples should subclass
    it. All subclasses should overwrite :meth:`__getitem__`, supporting fetching a
    data sample for a given key. Subclasses could also optionally overwrite
    :meth:`__len__`, which is expected to return the size of the dataset by many
    :class:`~torch.utils.data.Sampler` implementations and the default options
    of :class:`~torch.utils.data.DataLoader`.

    .. note::
      :class:`~torch.utils.data.DataLoader` by default constructs a index
      sampler that yields integral indices.  To make it work with a map-style
      dataset with non-integral indices/keys, a custom sampler must be provided.
    """

二、dataset类读取数据

python 复制代码
from torch.utils.data import Dataset
from PIL import Image
import os


class MyDataset(Dataset):
    def __init__(self, root_dir, label_dir):
        self.root_dir = root_dir
        self.label_dir = label_dir
        self.path = os.path.join(self.root_dir, self.label_dir)
        self.img_path = os.listdir(self.path)

    def __getitem__(self, idx):
        img_name = self.img_path[idx]
        img_item_path = os.path.join(self.root_dir, self.label_dir, img_name)
        img = Image.open(img_item_path)
        label = self.label_dir
        return img, label

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


ants_dataset = MyDataset(root_dir=r'dataset/train', label_dir='ants')

bees_dataset = MyDataset(root_dir=r'dataset/train', label_dir='bees')

train_data = ants_dataset + bees_dataset
print(len(train_data))
print(train_data[0])

输出

相关推荐
Smoothcloud润云8 分钟前
PyTorch推理输入长度分桶与Padding优化实战:减少无效计算
人工智能·pytorch·python·深度学习·gpu算力
盼小辉丶4 小时前
PyTorch强化学习实战(29)——深入解析强化学习中的探索策略
pytorch·深度学习·强化学习
FBI HackerHarry浩1 天前
Pytorch中 CPU tensor vs GPU tensor
人工智能·pytorch·python·深度学习
Smoothcloud润云2 天前
PyTorch推理服务模型热切换与失败回滚实战:降低版本更新中断
服务器·人工智能·pytorch·python·深度学习·gpu
朝朝辞暮i2 天前
第 22 课:Conditional 1D U-Net——Diffusion Policy 怎样理解一整段未来动作?
人工智能·pytorch·深度学习·transformer·vla
Yolanda_20222 天前
26.网络模型的保存与读取
人工智能·pytorch·python
承渊政道2 天前
【从零开始大模型开发与微调:基于PyTorch与ChatGLM】(开源大模型ChatGLM高级定制化应用实战)
人工智能·pytorch·python·llm·模型微调·glm
Smoothcloud润云3 天前
PyTorch大模型权重加载与启动耗时优化实战:定位磁盘、内存与显存瓶颈
人工智能·pytorch·python·深度学习·gpu算力
小弥儿3 天前
GitHub今日热榜 | 2026-10-12:pytorch 上升四位
人工智能·pytorch·学习·开源·github
论文复现现场3 天前
YOLO26 单卡 RTX 4090 24GB 训练教程:自定义数据集、显存优化与云 GPU 部署
pytorch·目标检测·rtx4090·算家云·yolo26