图像分类数据集

embedded/2025/3/16 5:00:16/

《动手学深度学习》-3.5-学习笔记

# 通过ToTensor实例将图像数据从PIL类型变换成32位浮点数格式,
# 并除以255使得所有像素的数值均在0~1之间
trans = transforms.ToTensor()#用于将图像数据从 PIL 图像格式(Python Imaging Library,Python 的图像处理库)转换为 PyTorch 张量(Tensor)。
mnist_train = torchvision.datasets.FashionMNIST(root="../data", train=True, transform=trans, download=True)#加载训练数据集
mnist_test = torchvision.datasets.FashionMNIST(root="../data", train=False, transform=trans, download=True)#加载测试数据集
  • torchvision.datasets.FashionMNIST 是 PyTorch 提供的用于加载 FashionMNIST 数据集的类。

  • 参数解释:

    • root="../data":指定数据集的存储路径。如果数据集不存在,PyTorch 会自动下载到这个路径。

    • train=True:表示加载训练数据集。

    • transform=trans:指定对图像数据应用的预处理操作,这里是 transforms.ToTensor(),即将图像转换为归一化的张量。

    • download=True:如果指定路径下没有数据集,会自动从网络下载。

    •  了解基础情况:在 PyTorch 中,mnist_train 是一个 torchvision.datasets.FashionMNIST 数据集对象,它是一个可迭代的集合,包含了所有训练样本的图像和标签。mnist_train[3] 表示获取数据集中的第四个样本(索引从 0 开始),包括第四个样本的图像和标签。
    • image.shape 输出 torch.Size([1, 28, 28]),表示图像是一个张量(Tensor),形状为:

      • 1:表示图像有 1 个通道(灰度图)。

      • 28:图像的宽度为 28 像素。

      • 28:图像的高度为 28 像素。

    • label 输出的是一个整数,表示图像的类别标签。FashionMNIST 数据集有 10 个类别,每个类别对应一个整数标签(从 0 到 9)。

    • 打印出来看了一下
       

      def get_fashion_mnist_labels(labels): """返回Fashion-MNIST数据集的文本标签"""text_labels = ['t-shirt', 'trouser', 'pullover', 'dress', 'coat','sandal', 'shirt', 'sneaker', 'bag', 'ankle boot']return [text_labels[int(i)] for i in labels]
    • 这是一个列表推导式,用于将输入的整数标签列表 labels 转换为对应的文本标签列表。

    • 对于 labels 中的每个元素 i

      • int(i) 确保 i 是整数(虽然通常 labels 已经是整数,但这里加了保险)。

      • text_labels[int(i)]text_labels 列表中获取对应的文本标签。
        对text_labels

      • 列表的索引(从 0 到 9)对应于数据集中的整数标签。例如:

        • 0 对应 't-shirt'

        • 1 对应 'trouser'

        • 9 对应 'ankle boot'
          下面这段 仅仅是 使用这个函数,应用场景

def show_images(imgs, num_rows, num_cols, titles=None, scale=1.5): """绘制图像列表"""figsize = (num_cols * scale, num_rows * scale)_, axes = d2l.plt.subplots(num_rows, num_cols, figsize=figsize)axes = axes.flatten()for i, (ax, img) in enumerate(zip(axes, imgs)):if torch.is_tensor(img):# 图片张量ax.imshow(img.numpy())else:# PIL图片ax.imshow(img)ax.axes.get_xaxis().set_visible(False)ax.axes.get_yaxis().set_visible(False)if titles:ax.set_title(titles[i])return axes

 show_images 是一个用于批量显示图像的工具函数,

X, y = next(iter(data.DataLoader(mnist_train, batch_size=18)))
show_images(X.reshape(18, 28, 28), 2, 9, titles=get_fashion_mnist_labels(y));

从 FashionMNIST 数据集中加载一批图像,使用 show_images 函数将图像以 2 行 9 列的网格形式显示,并为每张图像添加文本标签。


 

创建Dataloader

batch_size = 256def get_dataloader_workers():  """使用4个进程来读取数据"""return 4train_iter = data.DataLoader(mnist_train, batch_size, shuffle=True,num_workers=get_dataloader_workers())
def load_data_fashion_mnist(batch_size, resize=None): """下载Fashion-MNIST数据集"""trans = [transforms.ToTensor()]if resize:trans.insert(0, transforms.Resize(resize))trans = transforms.Compose(trans)mnist_train = torchvision.datasets.FashionMNIST(root="../data", train=True, transform=trans, download=True)mnist_test = torchvision.datasets.FashionMNIST(root="../data", train=False, transform=trans, download=True)return (data.DataLoader(mnist_train, batch_size, shuffle=True,num_workers=get_dataloader_workers()),data.DataLoader(mnist_test, batch_size, shuffle=False,num_workers=get_dataloader_workers()))

用于下载并加载 FashionMNIST 数据集,并将其转换为适合训练和测试的 DataLoader 对象。


http://www.ppmy.cn/embedded/172965.html

相关文章

Spring Boot与Apache Ignite集成:构建高性能分布式缓存和计算平台

1. 前言 1.1 什么是Apache Ignite Apache Ignite是一个高性能的分布式内存计算平台,支持内存缓存、分布式计算、流处理和机器学习等功能。它提供了低延迟的数据访问和强大的计算能力,适用于需要高性能和可扩展性的应用。 1.2 为什么选择Apache Ignite 高性能:Ignite利用内…

C++11多线程,锁与条件变量

🍑个人主页:Jupiter. 🚀 所属专栏:C学习笔记 欢迎大家点赞收藏评论😊 目录 线程库1. thread类的简单介绍1.1constructor构造函数1.2 线程函数参数2. 原子性操作库(atomic)3. lock_guard与unique_lock3.1 mutex的种类3.…

Python :数据模型

一. 什么是数据模型? Python数据模型是Python对象系统的抽象,通过一组特殊方法​(如__init__、__len__等)和协议​(如迭代协议、上下文管理协议),定义了对象如何与语言的内置功能(如…

SQLark 实战 | 如何从Excel、csv、txt等外部文件进行数据导入

数据导入导出是应用开发者在平时开发中最常用的操作之一,SQLark 里提供了方便的图形化界面来完成导入导出。本文先和大家分享如何从 Excel、csv、txt 等外部文件导入数据到数据库表中。 👉 前往 SQLark 官网:www.sqlark.com 下载全功能免费版…

Python 实现的采集诸葛灵签

Python 实现的采集诸葛灵签 项目介绍 这是一个基于 Python 开发的诸葛灵签数据采集和展示项目。通过爬虫技术获取诸葛神签的签文和解签内容,并提供数据存储和查询功能。 项目结构 zhuge/├── zhuge_scraper.py # 爬虫主程序├── zhuge_pages/ # 数据存储目录…

【蓝桥杯】3514字串简写

暴力 发现只能通过20%测试点。 k int(input()) s, c1, c2 input().split() le len(s) s [0] [i for i in s] # 1 -- lecnt 0 for i in range(1, le - (k-1) 1):if s[i] c1:for j in range(i(k-1),le1):if s[j] c2:cnt 1 print(cnt)优化 if s[i] c1:for j in range(i…

一、docker的安装

一、docker桌面 二、docker的配置文件 1、docker配置文件位置/etc/docker/daemon.json 使用json格式,graphdata-root {"graph":"/deploy/docker","registry-mirrors": ["https://8auvmfwy.mirror.aliyuncs.com"],"…

论文分享 | HE-Nav: 一种适用于复杂环境中空地机器人的高性能高效导航系统

阿木实验室始终致力于通过开源项目和智能无人机产品,为全球无人机开发者提供强有力的技术支持,并推出了开源项目校园赞助活动,助力高校学子在学术研究与技术创新中取得更大突破。近日,香港大学王俊铭同学,基于阿木实验…