使用pytorch解析mnist数据集

当解析MNIST数据集时,以下是代码的详细介绍:

1. **导入必要的库**:
 

import torch
import torchvision
from torchvision import transforms
from torchvision.datasets import MNIST
import matplotlib.pyplot as plt

   这些库是用于处理数据集和图像可视化的关键库。`torch`和`torchvision`是PyTorch的库,而`transforms`用于定义图像转换,`MNIST`用于加载MNIST数据集,`matplotlib`用于图像可视化。

2. **设置数据集的根目录**:

data_dir = 'E:/启航公司/2023纳新/mnist字符识别'

   这里设置了数据集的根目录。请确保你已经将MNIST数据集下载并放置在这个目录下。

3. **数据预处理**:

transform = transforms.Compose([transforms.ToTensor()])

   这里使用`transforms.Compose`来创建一个数据预处理管道,将图像转换为张量。`transforms.ToTensor()`将图像转换为PyTorch张量。

4. **加载MNIST数据集**:

mnist_dataset = MNIST(root=data_dir, train=True, transform=transform, download=False)

   这一行代码创建了一个MNIST数据集对象。`root`参数指定了数据集的根目录,`train=True`表示加载训练数据集,`transform`参数是之前定义的数据预处理管道,`download=False`表示不自动下载数据集。如果你没有手动下载数据集,你可以将`download`参数设置为`True`,数据集将会被自动下载到指定的`root`目录。

5. **创建数据加载器**:

data_loader = torch.utils.data.DataLoader(mnist_dataset, batch_size=5, shuffle=True)

   这一行代码创建了一个PyTorch数据加载器,用于批量加载图像和标签。`batch_size`参数指定了每个批次包含的图像数量,`shuffle=True`表示在每个周期(epoch)中随机打乱数据集的顺序。

6. **显示部分图像**:

fig, axes = plt.subplots(1, 5, figsize=(12, 5))for i, (image, label) in enumerate(data_loader):if i == 5:breakaxes[i].imshow(image[0].numpy().squeeze(), cmap='gray')axes[i].set_title(f"Label: {label[0]}")axes[i].axis('off')
plt.show()

   这部分代码创建一个图像窗口,然后遍历数据加载器以显示前5张图像。它使用`imshow`函数显示图像,将图像的张量转换为NumPy数组,使用`cmap='gray'`来表示图像是灰度图像,设置图像的标题和关闭坐标轴。最后,通过`plt.show()`来显示图像。

7.**完整代码**:

import torch
import torchvision
from torchvision import transforms
from torchvision.datasets import MNIST
import matplotlib.pyplot as plt# 设置数据集的根目录
data_dir = 'E:/启航公司/2023纳新/mnist字符识别'# 数据预处理,将图像转换为张量
transform = transforms.Compose([transforms.ToTensor()])# 加载MNIST数据集
mnist_dataset = MNIST(root=data_dir, train=True, transform=transform, download=False)# 创建数据加载器
data_loader = torch.utils.data.DataLoader(mnist_dataset, batch_size=5, shuffle=True)# 显示部分图像
fig, axes = plt.subplots(1, 5, figsize=(12, 5))
for i, (image, label) in enumerate(data_loader):if i == 5:breakaxes[i].imshow(image[0].numpy().squeeze(), cmap='gray')axes[i].set_title(f"Label: {label[0]}")axes[i].axis('off')plt.show()

这段代码的目的是加载MNIST数据集的图像,预处理它们,然后可视化前5张图像以及它们的标签。确保设置`data_dir`为包含MNIST数据集的正确目录。

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

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

相关文章

持续集成部署-k8s-服务发现-Ingress 路径匹配与虚拟主机匹配

持续集成部署-k8s-服务发现-Ingress 路径匹配与虚拟主机匹配 1. 安装 Ingress-Nginx2. 创建要代理的 Service3. 创建一个新的 Ingress-Nginx1. 安装 Ingress-Nginx 要使用 Ingress-Nginx 首先第一步是需要先安装它,安装的步骤可以参考:持续集成部署-k8s-服务发现-Ingress 2…

C++基础复习

C—Cherno 一、C中的引用 #include<iostream> #include"Log.h"void Increment(int& value) {value; }int main() {int a 5;int b 10;//引用不能只声明不赋值//&就和数据类型差不多&#xff0c;要和int写在一起&#xff0c;int&int& ref a…

JVM 分代垃圾回收过程

堆空间划分了代&#xff1a; 年轻代&#xff08;Young Generation&#xff09;分为 eden 和 Survivor 两个区&#xff0c;Survivor 又分为2个均等的区&#xff0c;S0 和 S1。 首先&#xff0c;新对象都分配到年轻代的 eden 空间&#xff0c;Survivor 刚开始是空的。 当 eden …

4. 一文快速学懂常用工具——GDB(上)

本章讲解知识点 什么是GDB?GDB 的安装在Windows平台上使用GDB攻略为什么 Git 可以?本专栏适合于软件开发刚入职的学生或人士,有一定的编程基础,帮助大家快速掌握工作中必会的工具和指令。本专栏针对面试题答案进行了优化,尽量做到好记、言简意赅。如专栏内容有错漏,欢迎在…

添加多个单元对象

开发环境&#xff1a; Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example参考代码 demo解决问题&#xff1a;不同阶段添加多个单元对象。 定义一个点集和一个单元集合&#xff0c;单元的类型可以是点、三角形、矩形、多边形等基本图形。只…

2023NOIP A层联测21-异或

给定一长度为 N N N 的由非负整数组成的数组 a a a&#xff0c;你需要进行一系列操作&#xff0c;每次操作选择一个区间 [ l , r ] [l,r] [l,r]&#xff0c;将 a [ l , r ] a_{[l,r]} a[l,r]​ 异或上 w w w。你需要将 a i a_i ai​ 全部变为 0 0 0。 求最小操作次数。…

MaxPatrol SIEM 8.0:用于行为分析的 ML,降低了硬件要求,每秒可处理超过 50 万个信息安全事件

Positive Technologies 发布了 MaxPatrol SIEM 信息安全事件监控和事件检测系统的第八个版本。更新后的产品将使该公司在需要超大型安装的公司和需要使用人工智能技术的政府机构中的市场份额增加近三分之一。 主要变化包括降低了硬件要求&#xff0c;提高了系统性能&#xff0…

【Windows】线程同步之信号量(Semaphores)

概述&#xff1a; semaphores 的说明和使用 微软官方文档&#xff1a; Semaphore Objects - Win32 apps | Microsoft Learn Semaphores是解决各种 producer/consumer问题的关键要素。这种问题会存有一个缓冲区&#xff0c;可能在同一时间内被读出数据或被写入数据。 理论可以证…

招生报名缴费小程序开发笔记(上)

前期调研 1.数字化趋势&#xff1a; 随着社会的数字化转型&#xff0c;越来越多的教育机构倾向于采用数字工具来简化和优化他们的招生和报名过程。招生报名缴费小程序是应对这一趋势的一种解决方案&#xff0c;可以提供高效、方便、快速的在线招生渠道。2.用户需求&#xff1a…

Jtti:Apache服务的反向代理及负载均衡怎么配置

配置Apache服务的反向代理和负载均衡可以帮助您分散负载并提高应用程序的可用性和性能。下面是一些通用的步骤&#xff0c;以配置Apache反向代理和负载均衡。 1. 安装和配置Apache&#xff1a; 确保您已经安装了Apache HTTP服务器。通常&#xff0c;Apache的配置文件位于/etc…

VSCode-C/C++环境配置

0.下载VSCode VSCode官网 Visual Studio Code - Code Editing. Redefined 1.安装VSCode 2.编译器下载与配置 2.1下载编译器安装包 编译器的安装包分为两种一种是在线的一种是离线的,其区别的特点如下 在线安装&#xff08;只是个下载器&#xff0c;打开后还要下载各种东西…

RocketMQ生产者消息发送出去了,消费者一直接收不到怎么办?(Rocket MQ订阅关系一致性)

问题: 使用RocketMQ消息队列&#xff0c;生产者将数据发送出去了&#xff0c;但是生产者一致没接收到&#xff08;或者是间隔好几分钟&#xff0c;突然接收到一条数据&#xff09;怎么办&#xff1f;并且通过rocket web控制台查看消息的状态为NOT_ONELINE或者NOT_CONSUME&#…

韦东山D1S板子——利用xfel工具初始化内置64MB内存,并直接下载程序到内存运行

1、前言 &#xff08;1&#xff09;最近使用韦东山老师的D1S板子学习RISC-V架构知识&#xff0c;我是结合《RISC-V体系结构编程与实践》这本书的进行学习&#xff0c;其中韦东山老师对书中的代码做了部分移植&#xff0c;到MMU模块就没有在移植书中代码&#xff1b; &#xff0…

java毕业设计基于springboot+vue高校本科学生综评系统

项目介绍 本系统是利用Spring Boot框架而设计的一款结合用户的实际情况而设计的平台&#xff0c;利用VUE技术来将可供学生和管理员来使用的所有界面来显示出来&#xff0c;利用Java语言技术来编程实现用户和管理员所执行的各类操作业务逻辑&#xff0c;以MySQL数据库来存取系统…

把Qt6.2.4内置的标签打印了一遍

2023年10月31日&#xff0c;周二晚上 #include <QGridLayout> #include <QPushButton> #include <QLabel> #include <QApplication> #include <QStyle>int main(int argc, char *argv[]) {QApplication a(argc, argv);QWidget widget;widget.set…

Python 数学函数和 math 模块指南

Python 提供了一组内置的数学函数&#xff0c;包括一个广泛的数学模块&#xff0c;可以让您对数字执行数学任务。 内置数学函数。min() 和 max() 函数可用于在可迭代对象中查找最低或最高值&#xff1a; 示例&#xff1a;查找可迭代对象中的最低或最高值&#xff1a; x min…

Webpack常见的插件和模式

文章目录 一、认识插件Plugin1.认识Plugin 二、CleanWebpackPlugin三、HtmlWebpackPlugin1.生成index.html分析2.自定义HTML模板3.自定义模板数据填充 四、DefinePlugin1.DefinePlugin的介绍2.DefinePlugin的使用 五、Mode配置 一、认识插件Plugin 1.认识Plugin Webpack的另一…

django中循环生成的多个btn,只有第一个btn会弹出模态框

django中循环生成的多个btn&#xff0c;只有第一个btn会弹出模态框 需求&#xff1a;为每个button按钮都绑定同一点击事件&#xff0c;点击每个btn都可弹出模态框 原因 问题代码 <button idbtnDel type"button" class"btn btn-primary btn-lg" > […

gdb常用指令

文章目录 gdb常用指令gdb启动断点函数调用栈打印单步执行结束函数观察点查看代码查看数组内容 gdb常用指令 gdb启动 gdb <app>gdb attach <pid>gdb attach <pid>gdb -p <pidof process>断点 使用break或者b命令来设置断点 break <filename:line…