图像分类数据集

十念  金牌会员 | 2025-3-15 15:14:12 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 990|帖子 990|积分 2970

《动手学深度学习》-3.5-学习笔记
  1. # 通过ToTensor实例将图像数据从PIL类型变换成32位浮点数格式,
  2. # 并除以255使得所有像素的数值均在0~1之间
  3. trans = transforms.ToTensor()#用于将图像数据从 PIL 图像格式(Python Imaging Library,Python 的图像处理库)转换为 PyTorch 张量(Tensor)。
  4. mnist_train = torchvision.datasets.FashionMNIST(root="../data", train=True, transform=trans, download=True)#加载训练数据集
  5. 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)。



    • 打印出来看了一下
       
      1. def get_fashion_mnist_labels(labels):
      2.     """返回Fashion-MNIST数据集的文本标签"""
      3.     text_labels = ['t-shirt', 'trouser', 'pullover', 'dress', 'coat',
      4.                    'sandal', 'shirt', 'sneaker', 'bag', 'ankle boot']
      5.     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'
          下面这段 仅仅是 使用这个函数,应用场景




  1. def show_images(imgs, num_rows, num_cols, titles=None, scale=1.5):
  2.     """绘制图像列表"""
  3.     figsize = (num_cols * scale, num_rows * scale)
  4.     _, axes = d2l.plt.subplots(num_rows, num_cols, figsize=figsize)
  5.     axes = axes.flatten()
  6.     for i, (ax, img) in enumerate(zip(axes, imgs)):
  7.         if torch.is_tensor(img):
  8.             # 图片张量
  9.             ax.imshow(img.numpy())
  10.         else:
  11.             # PIL图片
  12.             ax.imshow(img)
  13.         ax.axes.get_xaxis().set_visible(False)
  14.         ax.axes.get_yaxis().set_visible(False)
  15.         if titles:
  16.             ax.set_title(titles[i])
  17.     return axes
复制代码
 show_images 是一个用于批量显示图像的工具函数,
  1. X, y = next(iter(data.DataLoader(mnist_train, batch_size=18)))
  2. show_images(X.reshape(18, 28, 28), 2, 9, titles=get_fashion_mnist_labels(y));
复制代码
从 FashionMNIST 数据集中加载一批图像,使用 show_images 函数将图像以 2 行 9 列的网格形式显示,并为每张图像添加文本标签。

 
创建Dataloader
  1. batch_size = 256
  2. def get_dataloader_workers():  
  3.     """使用4个进程来读取数据"""
  4.     return 4
  5. train_iter = data.DataLoader(mnist_train, batch_size, shuffle=True,num_workers=get_dataloader_workers())
复制代码
  1. def load_data_fashion_mnist(batch_size, resize=None):
  2.     """下载Fashion-MNIST数据集"""
  3.     trans = [transforms.ToTensor()]
  4.     if resize:
  5.         trans.insert(0, transforms.Resize(resize))
  6.     trans = transforms.Compose(trans)
  7.     mnist_train = torchvision.datasets.FashionMNIST(
  8.         root="../data", train=True, transform=trans, download=True)
  9.     mnist_test = torchvision.datasets.FashionMNIST(
  10.         root="../data", train=False, transform=trans, download=True)
  11.     return (data.DataLoader(mnist_train, batch_size, shuffle=True,
  12.                             num_workers=get_dataloader_workers()),
  13.             data.DataLoader(mnist_test, batch_size, shuffle=False,
  14.                             num_workers=get_dataloader_workers()))
复制代码
用于下载并加载 FashionMNIST 数据集,并将其转换为适合训练和测试的 DataLoader 对象。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

十念

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表