【动手学习深度学习--逐行代码解析合集】03图像分类数据集

news2024/9/20 22:31:38

【动手学习深度学习】逐行代码解析合集

03图像分类数据集


视频链接:B站-动手学习深度学习
课程主页:https://courses.d2l.ai/zh-v2/
教材:https://zh-v2.d2l.ai/

代码

以下代码是在PyCharm中运行的

import matplotlib # 注意这个也要import一次
import matplotlib.pyplot as plt
import torch
import torchvision
from torch.utils import data
from torchvision import transforms
from d2l import torch as d2l
import os
os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"
d2l.use_svg_display()

"====================1、读取数据集===================="
# 通过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)
# 训练集60000张图,测试集10000张图
# len(mnist_train), len(mnist_test)
# print(mnist_train[0][0].shape)
" 输出:torch.Size([1, 28, 28])"
" 数据集由灰度图像组成,其通道数为1,每个图像宽高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()  # 将子图展开显示成2行9列
    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)  # 不显示x轴
        ax.axes.get_yaxis().set_visible(False)  # 不显示y轴
        if titles:
            ax.set_title(titles[i])
    return axes

#  以下是训练数据集中前几个样本的图像及其相应的标签。
X, y = next(iter(data.DataLoader(mnist_train, batch_size=18)))
# 18张28*28的图片,2行9列进行显示,图片上方标注标签名称
show_images(X.reshape(18, 28, 28), 2, 9, titles=get_fashion_mnist_labels(y))
# d2l.plt.show()

"====================2、读取小批量数据===================="
batch_size = 256
def get_dataloader_workers():  #@save
    """使用4个进程来读取数据"""
    return 4

train_iter = data.DataLoader(mnist_train, batch_size, shuffle=True,
                             num_workers=get_dataloader_workers())
# 读取训练数据所需时间
timer = d2l.Timer()
for X, y in train_iter:
    continue
print(f'{timer.stop():.2f} sec')
" 输出:'2.18 sec' "

"====================3、整合所有组件===================="
# 该函数用于获取和读取Fashion-MNIST数据集
def load_data_fashion_mnist(batch_size, resize=None):  #@save
    """下载Fashion-MNIST数据集,然后将其加载到内存中"""
    trans = [transforms.ToTensor()]
    # 因为当前trans里面包含的图片tensor大小是28x28,到后面训练时需要更大一点的数组就用resize变大
    if resize:
        trans.insert(0, transforms.Resize(resize))
    # 这个transforms.Compose()类的主要作用是串联多个图片变换的操作
    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![在这里插入图片描述](https://img-blog.csdnimg.cn/2bea987683a64f30b8bd440cea2e5a91.png)

"输出:torch.Size([32, 1, 64, 64]) torch.float32 torch.Size([32]) torch.int64"

运行结果

训练数据集中前几个样本的图像及其相应的标签
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/709000.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

word整理pdf转换来的文章,或者从网页复制的格式

这是对文章的格式整理。 1、去除 分节符 首先,用格式工厂或者别的pdf转换器等,都会出现为了保持原有格式不变因此增加分节符的情况 添加分节符后,即使这一页还有很大的空白,下一段也会另起一页 而且,单纯的backspa…

Java+控制台实现员工信息管理系统

Java控制台实现员工信息管理系统 一、系统介绍二、功能展示1.主页2.添加员工3.员工列表4.根据员工号查询信息5.根据员工号删除信息6.根据员工号调整员工工资7.退出系统 四、其它1.其他系统实现2.获取源码 一、系统介绍 使用ArrayList对完成一个员工管理系统,员工信…

Flutter 实现任意控件拖动

文章目录 前言一、如何实现?1、使用GestureDetector响应拖动事件2、使用Transform变换控件位置3、计算拖动区域 二、完整代码三、使用示例1、基本用法 总结 前言 使用flutter开发是需要控件能拖动,比如画板中的元素,或者工具条,搜…

chatgpt赋能python:用Python进行数据挖掘来优化SEO排名

用Python进行数据挖掘来优化SEO排名 您是否一直在为如何在搜索引擎排名上优化自己的网站而苦恼?事实上,Python可以成为您的得力助手,来简化您的分析和优化过程,并帮助您在搜索引擎排名上获得更好的结果。 什么是SEO?…

tomcat与自定义类加载器

类加载器与类的”相同“判断 类加载器除了用于加载类外,还可用于确定类在Java虚拟机中的唯一性。 不同类加载器加载的类在 JVM 看来是两个不同的类,因为在 JVM 中一个类的唯一标识是 类加载器类名(包括包名)。 类加载器种类 启动类加载器,…

phpstorm左边变黄,页面内跳转追踪等功能不好使了

第一种方法:删除项目根目录中.idea文件夹(确保删除成功),然后再重新打开项目即可(这个方法对我无效) 第二种方法:点击File(文件)->Repair IDE(修复IDE),按照右下角的指示一步步操作即可(这种…

华为OD机试真题 Python 实现【静态代码扫描服务】【2023Q1 100分】

目录 一、题目描述二、输入描述三、输出描述四、解题思路五、Python算法源码六、效果展示1、输入2、输出 一、题目描述 静态扫描快速识别源代码的缺陷,静态扫描的结果以扫描报告作为输出: 文件扫描的成本和文件大小相关,如果文件大小为N&am…

echarts折线图背景空白太大

1、没有调间距的效果: 2、更改间距后的效果: 3、其实只要更改grid定位值就行了,上代码: grid: {top: 20px,left: 20px,right: 20px,bottom: 20px,containLabel: true},4、将代码copy到option里面就行了

【中间件】Ngnix入门

文章目录 下载地址相关概念*反向代理:*负载均衡:轮询权重轮询iphash*动静分离 文件解释/conf/nginx.conf 基本使用双击运行(不建议)使用命令行 常用命令(Linux下) 下载地址 Nginx官网下载页 相关概念 *反…

IMX8QXP SPI CS片选连续传输模式

问题背景 在开发项目中,换了一个spi安全芯片,发现不能进行通信,查看spi信号波形,时钟,发送数据,片选都是正常的,但没有回复数据。安全芯片技术正常通过查看CS片选波形信号,提出CS片选…

Appium: Windows系统桌面应用自动化测试(一)

Appium: Windows系统桌面应用自动化测试 一、方案调研二、环境搭建1、WinAppDriver环境搭建(1)开启开发者选项中的“开发人员模式”(2)windows sdk下载安装(3)WinAppDriver下载安装 2、appium环境搭建&…

2018年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题——纯享题目版

🏠个人主页:fo安方的博客✨ 💂个人简历:大家好,我是fo安方,考取过HCIE Cloud Computing、CCIE Security、CISP等证书。🐳 💕兴趣爱好:b站天天刷,题目常常看&a…

第十二章 原理篇:vision transformer

参考教程: https://arxiv.org/pdf/2010.11929.pdf https://zhuanlan.zhihu.com/p/340149804 【大佬总结的非常好,他的好多篇文章都很值得学习】 文章目录 为什么会使用transformerVIT详解method获得patchpatch embeddingposition embedding 代码实现eino…

数据结构--队列的顺序实现

数据结构–队列的顺序实现 队列的顺序存储代码定义 #define MaxSize 10 //定义队列中元素最大个数 typedef struct {ElemType data[MaxSize]; //静态数组存放队列元素int front, rear; //对头指针 & 队尾指针 } SqQueue; 初始化操作 void InitQueue(SqQueue &Q) {Q.r…

第九十三天学习记录:C++核心:类和对象Ⅱ(五星重要)

对象的初始化和清理 构造函数和析构函数 对象的初始化和清理也是两个非常重要的安全问题 一个对象或者变量没有初始化状态,对其使用后果是未知 同样的使用完一个对象或变量,没有及时清理,也会造成一定的安全问题 c利用了构造函数和析构函数…

搜索封装+crud+重点细节优化

新建GSearchQuery.vue <template> <el-row :span"24><el-input type"text" v-model"query"></el-input><slot></slot> </el-row> </template>data() {return{query: }}index.vue 引入组件 <GSe…

每周学点数学 1:数学建模计划篇

用GPT3.5生成了一段数学建模学习的计划&#xff0c;我准备在视觉学习的同时&#xff0c;穿插一些数学理论方面的学习&#xff0c;以下是近三个月的计划。 7月2日-7月8日&#xff1a;了解数学建模的基本概念和方法&#xff0c;阅读相关教材和论文&#xff0c;了解数学建模的应…

【如何用大语言模型快速深度学习系列】开篇+文本匹配系列

开篇 很久没有更新啦&#xff01;这个系列其实是自己的一个学习笔记啦&#xff01;这个系列的特色就是我们不再通过看视频的方式入门深度学习。 开篇的时候&#xff08;2023.07.01&#xff09;&#xff0c;我想的是围绕自然语言处理的一些基础方法&#xff08;代码方面&#…

带你用Python制作一个经典小游戏:扫雷

名字&#xff1a;阿玥的小东东 学习&#xff1a;Python、C/C 主页链接&#xff1a;阿玥的小东东的博客_CSDN博客-python&&c高级知识,过年必备,C/C知识讲解领域博主 目录 游戏界面尺寸 方块尺寸 雷的数量 游戏状态 最后&#xff0c;我们定义一个函数run()&#xff…

软件项目成本的计算

在《架构思维的六要素》中&#xff0c;列出的第一个要素就是成本&#xff0c;成本对项目设计和决策起着至关重要的作用。今天咱们就来看看直接成本、间接成本和总成本的关系。 直接成本 工作于服务的开发者工作于系统测试的测试者设计数据库的DBA设计界面和致力于优化用户体验的…