• 深度学习_9_图片分类数据集


    散装代码:

    import matplotlib.pyplot as plt
    import torch
    import torchvision
    from torch.utils import data
    from torchvision import transforms
    from d2l import torch as d2l
    
    d2l.use_svg_display()
    
    
    # 通过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)
    
    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 axes
    
    X, y = next(iter(data.DataLoader(mnist_train, batch_size=20)))
    show_images(X.reshape(20, 28, 28), 2, 10, titles=get_fashion_mnist_labels(y));
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    下载数据集是为了训练模型的时候用

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

    由于图片处理不是重点,主要介绍函数功能:

    输出标号对应字符串函数

    def get_fashion_minist_labels(labels):
    
    • 1

    输入:

    [0, 2]
    
    • 1

    输出:

    ['t-shirt', 'pullover']
    
    • 1

    图片打印函数

    def show_images(imgs, num_rows, num_cos, titles = None, scale = 1.5):
    
    • 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)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    从网上下载数据,下载在上一级的data文件夹内

    X, y = next(iter(data.DataLoader(mnist_train, batch_size=20)))
    show_images(X.reshape(20, 28, 28), 2, 10, titles=get_fashion_mnist_labels(y));
    plt.show()
    
    • 1
    • 2
    • 3

    批量获取图片并显示

    返还批量训练数据集与测试数据集函数:

    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()))
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    总结:

    这些代码的作用是获取网络图片(Fashion-MNIST数据集),将其下载至电脑,做好处理,以便后续训练模型以及检测模型

  • 相关阅读:
    【Vue】Non-Props 属性是什么
    【Java从入门到放弃01】:类变量、类方法(static在类中的用法)及main函数细节
    互融云工业品电商系统开发整体解决方案 助力行业数字信息化发展
    java中的原子操作类
    快速了解Apipost
    独立站选品和欧美市场前瞻
    Unity中Tilemap Layer详解
    FFmepg使用指南
    SpringBoot2应用及其底层源码学习(二)(转自尚硅谷)
    R数据分析:解决科研中的“可重复危机”,理解Rmarkdown
  • 原文地址:https://blog.csdn.net/xyint/article/details/134222921