当前位置: 首页 > news >正文

【动手学深度学习】3.5. 图像分类数据集


目录

    • 3.5. 图像分类数据集
      • 1)读取数据集
      • 2)读取小批量
      • 3)整合所有组件
      • 4)小结


.

3.5. 图像分类数据集

我们将使用Fashion-MNIST数据集,作为图像分类数据集。

%matplotlib inline
import torch
import torchvision
from torch.utils import data
from torchvision import transforms
from d2l import torch as d2ld2l.use_svg_display()

.

1)读取数据集

可以通过框架中的内置函数将Fashion-MNIST数据集下载并读取到内存中。

# 通过ToTensor实例将图像数据从PIL类型变换成32位浮点数格式,
# 并除以255使得所有像素的数值均在0~1之间
trans = transforms.ToTensor()
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)

Fashion-MNIST由10个类别的图像组成, 每个类别由训练数据集(train dataset)中的6000张图像 和测试数据集(test dataset)中的1000张图像组成。

# 数据集大小
len(mnist_train), len(mnist_test)
# 输出:(60000, 10000)# 数据集图像尺寸
mnist_train[0][0].shape
# 输出:torch.Size([1, 28, 28])# 数据集类别
def get_fashion_mnist_labels(labels):  #@save"""返回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]

现在可以创建一个函数来可视化这些样本。

def show_images(imgs, num_rows, num_cols, titles=None, scale=1.5):  #@save"""绘制图像列表"""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 axesX, 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));

在这里插入图片描述

.

2)读取小批量

通过内置数据迭代器,我们可以随机打乱了所有样本,从而无偏见地读取小批量。

batch_size = 256def get_dataloader_workers():  #@save"""使用4个进程来读取数据"""return 4train_iter = data.DataLoader(mnist_train, batch_size, shuffle=True,num_workers=get_dataloader_workers())

读取训练数据所需的时间。

timer = d2l.Timer()
for X, y in train_iter:continue
f'{timer.stop():.2f} sec'# 输出:'3.37 sec'

.

3)整合所有组件

定义load_data_fashion_mnist函数,获取Fashion-MNIST数据集,返回训练集和验证集的数据迭代器。 函数接受可选参数resize,用来将图像大小调整为另一种形状。

def load_data_fashion_mnist(batch_size, resize=None):  #@save"""下载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()))

下面,通过指定resize参数来测试load_data_fashion_mnist函数的图像大小调整功能。

train_iter, test_iter = load_data_fashion_mnist(32, resize=64)
for X, y in train_iter:print(X.shape, X.dtype, y.shape, y.dtype)break# 输出:
torch.Size([32, 1, 64, 64]) torch.float32 torch.Size([32]) torch.int64

现在已经准备好使用Fashion-MNIST数据集,便于下面的章节调用来评估各种分类算法。

.

4)小结

  • Fashion-MNIST是一个服装分类数据集,由10个类别的图像组成。我们将在后续章节中使用此数据集来评估各种分类算法。

  • 我们将高度像素,宽度像素图像的形状记为或(,)。

  • 数据迭代器是获得更高性能的关键组件。依靠实现良好的数据迭代器,利用高性能计算来避免减慢训练过程。

.


声明:资源可能存在第三方来源,若有侵权请联系删除!

相关文章:

  • Python 高级主题与性能优化指南
  • 体系结构论文(八十六):The Dark Side ofComputing: SilentData Corruptions
  • C++ —— STL容器 —— string的模拟实现
  • 北京大学:AI+Agent与Agentic+AI的原理与应用(适合科研从业者和技术爱好者阅读)
  • 功能测试—软件的生命周期
  • 单 exe 截图软件:ScreenCapture 2.3.1 发布
  • 包含各种扁平化UI套件的psd适用于博客电商类移动端网站项目
  • 搭建前端项目 Vue+element UI引入 步骤 (超详细)
  • Linux 系统设置时区
  • Flask应用中处理异步事件(后台线程+事件循环)的方法(2)
  • 一个完整的LSTM风光发电预测与并网优化方案,包含数据处理、模型构建、训练优化、预测应用及系统集成实现细节
  • 2025软件测试面试题汇总(接口测试篇)
  • Kubernetes安全机制深度解析(四):动态准入控制和Webhook
  • 成都鼎讯短波通信信号模拟设备:短波频段的电磁模拟王者​
  • visual studio2019+vcpkg管理第三方库
  • 谷歌具身智能VLA大模型 —— Gemini Robotics : 将人工智能带入到物理世界
  • CLONE——面向长时任务的闭环全身遥操:其MoE架构可实现“蹲着走”,且通过LiDAR里程计和VR跟踪技术解决位置偏差问题
  • 数字孪生之KTV洗脚城白皮书:娱乐产业的虚实融合革命
  • Day01_C数据结构
  • 2025虚幻人物模型积累
  • 100元建网站/百度软件应用中心下载
  • 网站系统建设思想如何写/企业如何进行宣传和推广
  • vr全景网站开发制作/广告外链购买交易平台
  • 有趣网站之家/uc搜索引擎入口
  • 如何在南美做网站推广/自动友链网
  • 做网站绍兴/站长工具果冻传媒