【深度学习】PyTorch的dataloader制作自定义数据集

这篇具有很好参考价值的文章主要介绍了【深度学习】PyTorch的dataloader制作自定义数据集。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PyTorch的dataloader是用于读取训练数据的工具,它可以自动将数据分割成小batch,并在训练过程中进行数据预处理。以下是制作PyTorch的dataloader的简单步骤:

  1. 导入必要的库

import torch
from torch.utils.data import DataLoader, Dataset
  1. 定义数据集类 需要自定义一个继承自torch.utils.data.Dataset的类,在该类中实现__len____getitem__方法。

class MyDataset(Dataset):
    def __init__(self, data):
        self.data = data
    
    def __len__(self):
        return len(self.data)
    
    def __getitem__(self, index):
        # 返回第index个数据样本
        return self.data[index]
  1. 创建数据集实例

data = [1, 2, 3, 4, 5]
dataset = MyDataset(data)
  1. 创建dataloader实例

使用torch.utils.data.DataLoader创建dataloader实例,可以设置batch_sizeshuffle等参数。

dataloader = DataLoader(dataset, batch_size=2, shuffle=True)
  1. 使用dataloader读取数据

for batch in dataloader:
    # batch为一个batch的数据,可以直接用于训练
    print(batch)

以上是制作PyTorch的dataloader的简单步骤,根据实际需求可以进行更复杂的操作,如数据增强、并行读取等。

5.已经分类的文件生成标注文件

假设你已经将所有的图片按照类别分别放到了十个文件夹中,可以使用以下代码生成标注文件:

import os
# 定义图片所在的文件夹路径和标注文件的路径
img_dir = '/path/to/image/directory'
ann_file = '/path/to/annotation/file.txt'
# 遍历每个类别文件夹中的图片,将标注信息写入到标注文件中
with open(ann_file, 'w') as f:
    for class_id in range(1, 11):
        class_dir = os.path.join(img_dir, 'class{}'.format(class_id))
        for filename in os.listdir(class_dir):
            if filename.endswith('.jpg'):
                # 写入图片的文件名和类别
                f.write('{} {}\n'.format(filename, class_id))

在上述代码中,首先定义了图片所在的文件夹路径img_dir和标注文件的路径ann_file

然后,使用with open(ann_file, 'w') as f:语句打开标注文件,使用for循环遍历每个类别文件夹中的图片,并将标注信息写入到标注文件中。

其中,os.path.join函数用于拼接路径字符串,f.write函数用于将图片的文件名和类别写入到标注文件中,且每个标注信息占据一行,文件名和类别之间使用空格分隔。需要注意的是,上述代码假设每个类别文件夹的名称为class1class2、...、class10,图片文件名的后缀为.jpg,且标注文件中每行仅包含一个文件名和一个标签,且它们之间使用空格分隔。如果文件夹名称、文件名后缀或标注文件格式不同,需要对代码进行相应的修改。

生成的标注文件是一个文本文件,每行包含一个图片的文件名和类别标签,两者之间使用空格分隔。举个例子,如果第一个文件夹中有三张图片,它们的文件名分别为img_001.jpgimg_002.jpgimg_003.jpg,类别标签为1,则生成的标注文件内容如下:

img_001.jpg 1
img_002.jpg 1
img_003.jpg 1

这个标注文件可以被用作训练深度学习模型时的标签数据。

6.图像读取示例

如果数据集已经按照类别分好了文件夹,我们可以使用torchvision.datasets.ImageFolder类来读取数据集。ImageFolder类会自动将每个文件夹中的图像按照类别进行标记,并且支持数据增强和数据预处理等操作。以下是一个示例,展示如何使用ImageFolder类读取数据集,并使用DataLoader批量加载数据集:

import torch
import torchvision
from torchvision import transforms
# 数据增强和预处理
transform = transforms.Compose([
    transforms.RandomResizedCrop(224),
    transforms.RandomHorizontalFlip(),
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])
# 读取数据集
dataset = torchvision.datasets.ImageFolder('path/to/data', transform=transform)
# 创建数据加载器
dataloader = torch.utils.data.DataLoader(dataset, batch_size=32, shuffle=True, num_workers=4)
# 使用数据加载器迭代数据集
for batch_data, batch_labels in dataloader:
    print(batch_data.shape)
    print(batch_labels.shape)

在上述代码中,我们首先定义了数据增强和预处理的操作,然后使用ImageFolder类读取数据集,将数据增强和预处理操作传递给transform参数。

ImageFolder类会自动将图像按照类别进行标记。

然后,我们使用DataLoader将数据集打包成批量,每个批量大小为32,并且开启了shuffle功能和4个线程。

最后,我们使用for循环迭代数据加载器,逐批加载数据,并输出每个批量的数据和标签。

需要注意的是,使用ImageFolder类前需要将数据集的文件夹按照类别进行命名,例如两个文件夹的名字分别为class1class2。另外,transforms.Normalize中的meanstd参数需要根据数据集进行调整。文章来源地址https://www.toymoban.com/news/detail-688109.html

到了这里,关于【深度学习】PyTorch的dataloader制作自定义数据集的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Pytorch目标分类深度学习自定义数据集训练

    目录 一,Pytorch简介; 二,环境配置; 三,自定义数据集; 四,模型训练; 五,模型验证;         PyTorch是一个开源的Python机器学习库,基于Torch,用于自然语言处理等应用程序。PyTorch 基于 Python: PyTorch 以 Python 为中心或“pythonic”,旨在深度集成 Python 代码,而不是

    2024年02月07日
    浏览(59)
  • pytorch进阶学习(二):使用DataLoader读取自己的数据集

    上一节使用的是官方数据集fashionminist进行训练,这节课使用自己搜集的数据集来进行数据的获取和训练。 教学视频:https://www.bilibili.com/video/BV1by4y1b7hX/?spm_id_from=333.1007.top_right_bar_window_history.content.clickvd_source=e482aea0f5ebf492c0b0220fb64f98d3 pytorch进阶学习(一):https://blog.csdn.net/w

    2024年02月09日
    浏览(44)
  • 【代码笔记】Pytorch学习 DataLoader模块详解

    dataloader主要有6个class构成(可见下图) _DatasetKind: _InfiniteConstantSampler: DataLoader: _BaseDataLoaderIter: _SingleProcessDataLoaderIter: _MultiProcessingDataLoaderIter: 我们首先看一下DataLoader的整体结构: init : _get_iterator: multiprocessing_context: multiprocessing_context: setattr : iter : _auto_collation: _ind

    2023年04月11日
    浏览(38)
  • 深度学习--PyTorch定义Tensor以及索引和切片

    ​这些方法只是开辟了空间,所附的初始值(非常大,非常小,0),后面还需要我们进行数据的存入。 torch.empty():返回一个没有初始化的Tensor,默认是FloatTensor类型。 torch.FloatTensor():返回没有初始化的FloatTensor。 torch.IntTensor():返回没有初始化的IntTensor。 随机均匀分布:

    2023年04月20日
    浏览(49)
  • 深度学习Docker使用, (Pytorch/TensorRT/DeepStream),标记上传制作自己的DockerHub

    https://docs.docker.com/engine/install/ubuntu/ Set Up Install Docker Engine 安装nvidia cuda tookit 加入了之后重启了才能使用 Docker Root Dir: /data/docker 我的docker数据的挂载就是在/data/docker下面的 https://catalog.ngc.nvidia.com/containers 全部镜像都是在NVIDIA官方找的 登陆自己的账号 标记自己的镜像 在这里面

    2024年02月13日
    浏览(43)
  • 解决pytorch中Dataloader读取数据太慢的问题

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 最近在使用pytorch框架进行模型训练时遇到一个性能问题,即数据读取的速度远远大于GPU训练的速度,导致整个训练流程中有大部分时间都在等待数据发送到GPU,在资源管理器中呈现出CUDA使用率周期性波

    2023年04月11日
    浏览(51)
  • 手把手写深度学习(23):视频扩散模型之Video DataLoader

    手把手写深度学习(0):专栏文章导航 前言: 训练自己的视频扩散模型的第一步就是准备数据集,而且这个数据集是text-video或者image-video的多模态数据集,这篇博客手把手教读者如何写一个这样扩散模型的的Video DataLoader。 目录 准备工作 下载数据集 视频数据打标签

    2024年03月21日
    浏览(49)
  • 大数据深度解析NLP文本摘要技术:定义、应用与PyTorch实战

    在本文中,我们深入探讨了自然语言处理中的文本摘要技术,从其定义、发展历程,到其主要任务和各种类型的技术方法。文章详细解析了抽取式、生成式摘要,并为每种方法提供了PyTorch实现代码。最后,文章总结了摘要技术的意义和未来的挑战,强调了其在信息过载时代的

    2024年02月03日
    浏览(45)
  • 【AI】《动手学-深度学习-PyTorch版》笔记(十六):自定义网络层、保存/加载参数、使用GPU

    自定义网络层很简单,三步即可完成 继承类:nn.Module 定义初始化函数:__init__中定义需要初始化的代码 定义向前传播函数:forward 1)定义网络层

    2024年02月13日
    浏览(47)
  • 【深度学习】Pytorch 系列教程(十二):PyTorch数据结构:4、数据集(Dataset)

             目录 一、前言 二、实验环境 三、PyTorch数据结构 0、分类 1、张量(Tensor) 2、张量操作(Tensor Operations) 3、变量(Variable) 4、数据集(Dataset) 随机洗牌           ChatGPT:         PyTorch是一个开源的机器学习框架,广泛应用于深度学习领域。它提供了丰富

    2024年02月07日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包