深度学习(四)——torchvision中数据集的使用

深度,学习,torchvision,数据,使用 · 浏览次数 : 132

小编点评

**一、 科研数据集下载链接:** ```python https://pytorch.org/vision/stable/index.html ``` **二、 CIFAR10数据集详解具体网站:** * **CIFAR10 — Torchvision 0.15 documentation**1. **三、 使用transform处理多组图像数据代码示例:** ```python import torchvisiondataset_transform # 定义transform=dataset_transform,使得图像数据类型转换为Compose中处理过后的train_set=torchvision.datasets.CIFAR10(root=\"./dataset\",train=True,transform=dataset_transform,download=True)test_set=torchvision.datasets.CIFAR10(root=\"./dataset\",train=False,transform=dataset_transform,download=True) # 对处理过后的图像进行可视化操作 from torch.utils.tensorboard import SummaryWriterwriter=SummaryWriter(\"p10\") for i in range(10): img,target=test_set[i] writer.add_image(\"test_set\",img,i)writer.close() ``` **四、 其他补充说明:** * 该代码示例使用的是TensorBoard库来可视化图像数据。 * `transform`函数可以应用多种数据变换,例如ToTensor、Normalize等。 * `torchvision.datasets.CIFAR10`类可以用于加载CIFAR10数据集。 * `Dataset.classes`属性可以获取数据集中的标签类别。

正文

一、 科研数据集

下载链接:

https://pytorch.org/vision/stable/index.html

本文中我们使用的是\(CIFAR\)数据集

二、CIFAR10数据集详解

具体网站:

CIFAR10 — Torchvision 0.15 documentation

1. 参数详解

  • torchvision中每个数据集的参数都是大同小异的,这里只介绍CIFAR10数据集

  • 该数据集的数据格式为PIL格式

class torchvision.datasets.CIFAR10(root:str,train:bool=True,transform:Optional[Callable]=None,target_transform:Optional[Callable]=None,download:bool=False)
  • 内置函数:

    • root(string):必须设置,输入数据集下载后存放在电脑中的路径

    • train(bool):True代表创建的一个训练集(train);False代表创建一个测试集(test)。

    • transform:对数据集中的数据进行变换

    • target_transform:对标签(target)数据进行变换

    • download(bool):True的时候会自动从网上下载这个数据集,False的时候则不会下载该数据集。

  • 代码示例:

    • 运行后直接下载数据集

    • 需要注意的是,如果下载速度过慢,则可以在运行后,把弹出的网址单拎出来,放到迅雷等软件上进行下载

import torchvision

#设置训练集
#root:设置为相对路径,会在该.py文件下设置一个名为dataset的文件存放CIFAR10数据
#train: True,数据集为训练集
#download: 下载该数据集
train_set=torchvision.datasets.CIFAR10(root="./dataset",train=True,download=True)

#设置测试集;train=False
test_set=torchvision.datasets.CIFAR10(root="./dataset",train=False,download=True)
  • 数据标签查看:

    • 在运行上面的代码下载好数据集后,输入print(test_set[0),并使用一下pycharm的dubug功能,不难发现:

    • 也就是说,数据标签有'airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck'十类,分别用整数0~9来表示

    • 数据集包含的所有标签也可以用下面的代码打印出来:

print(test_set.classes)
#[Run] [airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']
  • 某条数据的PIL Image、标签的获取方法:img,target=test_set[索引]
img,target=test_set[0]
print(img)
print(target,test_set.classes[target])

#[Run]
#<PIL.Image.Image image mode=RGB size=32x32 at 0x1DDF9FCD640>
#3  cat
  • 显示图片:
img.show()

三、使用transform处理多组图像数据

代码示例

  • 首先使用\(Compose\)去定义如何处理PIL图像数据

  • 然后代入\(torchvision.datasets.CIFAR10\)中,处理里面的图像数据

#首先用Compose处理图像数据,可以先转为tensor格式,然后再裁剪等,这里只转tensor格式
import torchvision
dataset_transform=torchvision.transforms.Compose([
    torchvision.transforms.ToTensor()
])

#定义transform=dataset_transform,使得图像数据类型转换为Compose中处理过后的
train_set=torchvision.datasets.CIFAR10(root="./dataset",train=True,transform=dataset_transform,download=True)
test_set=torchvision.datasets.CIFAR10(root="./dataset",train=False,transform=dataset_transform,download=True)
  • 对处理过后的图像进行可视化操作
from torch.utils.tensorboard import SummaryWriter
writer=SummaryWriter("p10")
for i in range(10): #显示test_set数据集中的前十张图片
    img,target=test_set[i]
    writer.add_image("test_set",img,i)
writer.close()

与深度学习(四)——torchvision中数据集的使用相似的内容:

深度学习(四)——torchvision中数据集的使用

前面的transform只是对单个数据图像的处理,本文着重讲对多个数据图像的处理,并介绍科研中常用数据集的下载方式。

深度学习之PyTorch实战(4)——迁移学习

(这篇博客其实很早之前就写过了,就是自己对当前学习pytorch的一个教程学习做了一个学习笔记,一直未发现,今天整理一下,发出来与前面基础形成连载,方便初学者看,但是可能部分pytorch和torchvision的API接口已经更新了,导致部分代码会产生报错,但是其思想还是可以借鉴的。 因为其中内容

深度学习论文翻译解析(二十二):Uniformed Students Student-Teacher Anomaly Detection With Discriminative Latent Embbeddings

论文标题:Uniformed Students Student-Teacher Anomaly Detection With Discriminative Latent Embbeddings 论文作者: Paul Bergmann Michael Fauser David Sattlegger C

深度学习项目-MobileNetV2水果识别模型

本项目旨在研究利用深度学习模型进行水果图像分类的方法,具体包括两个主要任务:一是使用卷积神经网络(CNN)模型进行水果图片的分类,二是探索轻量级神经网络模型MobileNetV2在水果图像分类中的应用。

深度学习框架火焰图pprof和CUDA Nsys配置指南

注:如下是在做深度学习框架开发时,用到的火焰图pprof和 CUDA Nsys 配置指南,可能对大家有一些帮助,就此分享。一些是基于飞桨的Docker镜像配置的。 一、环境 & 工具配置 0. 开发机配置 # 1.构建镜像, 记得映射端口,可以多映射几个;记得挂载ssd目录,因为数据都在ssd盘上

【高级RAG技巧】在大模型知识库问答中增强文档分割与表格提取

前言 文档分割是一项具有挑战性的任务,它是任何知识库问答系统的基础。高质量的文档分割结果对于显著提升问答效果至关重要,但是目前大多数开源库的处理能力有限。 这些开源的库或者方法缺点大致可以罗列如下: 只能处理文本,无法提取表格中的内容 缺乏有效的分割策略,要么是一整个文档全部提取,要么是词粒度的获取

深度学习之PyTorch实战(5)——对CrossEntropyLoss损失函数的理解与学习

其实这个笔记起源于一个报错,报错内容也很简单,希望传入一个三维的tensor,但是得到了一个四维。 RuntimeError: only batches of spatial targets supported (3D tensors) but got targets of dimension: 4

[转帖]深度学习和机器学习的区别

最近在听深度学习的课,老师提了一个基本的问题:为什么会出现深度学习?或者说传统的机器学习有什么问题。老师讲解的时候一带而过,什么维度灾难啊之类的,可能觉得这个问题太浅显了吧(|| Д)````不过我发现自己确实还不太明白,于是Google了一下,发现一篇很棒的科普文,这里翻译一下,分享给大家:翻译自

深度学习(一)——使用Python读取图片

Pytorch处理图像的一些入门,内含os和PIL库相关的图像处理方法

深度学习(三)——Transforms的使用

有关Transforms使用的简介