手写数字识别(1)

news/2024/11/24 22:38:51/

#3.6.1 MNIST数据集
MNIST数据集是由0到9的数字图像构成的。训练图像有6万张,测试图像有1万张,这些图像可以用于学习和推理。MNIST数据集的一般使用方法是,先用训练图像进行学习,再用学习到的模型度量能在多大程度上对测试图像进行正确的分类。

可以按下述方式读入MNIST数据。

import sys,os
sys.path.append("D:\学习资料\深度学习")
from mnist import load_mnist
(x_train,t_train)(x_test,t_test)=load_mnist(flatten=True,normalize=False)#第一次调用花费的时间较长

输出各个数据的形状

 print(x_train.shape)#(60000, 784)print(t_train.shape)#(60000,)print(x_test.shape)#(10000, 784)print(t_test.shape)#(10000,)

load_mnist函数以“(训练图像 ,训练标签 ),(测试图像,测试标签 )”的形式返回读入的MNIST数据。此外,还可以像load_mnist(normalize=True, flatten=True, one_hot_label=False) 这 样,设 置 3 个 参 数。第 1 个参数normalize设置是否将输入图像正规化为0.0~1.0的值。如果将该参数设置为False,则输入图像的像素会保持原来的0~255。第2个参数flatten设置是否展开输入图像(变成一维数组)。如果将该参数设置为False,则输图
像为1 × 28 × 28的三维数组;若设置为True,则输入图像会保存为由784个元素构成的一维数组。第3个参数one_hot_label设置是否将标签保存为one-hot表示(one-hot representation)。one-hot表示是仅正确解标签为1,其余皆为0的数组,就像[0,0,1,0,0,0,0,0,0,0]这样。当one_hot_label为False时,只是像7、2这样简单保存正确解标签;当one_hot_label为True时,标签则保存为one-hot表示。

现在,我们试着显示MNIST图像,同时也确认一下数据。图像的显示使用PIL(Python Image Library)模块。执行下述代码后,训练图像的第一张就会显示出来。

import sys,os
sys.path.append("D:\学习资料\深度学习")
import numpy as np
from mnist import load_mnist
from PIL import Imagedef img_show(img):pil_img = Image.fromarray(np.uint8(img))pil_img.show()(x_train,t_train),(x_test,t_test)=load_mnist(flatten=True,normalize=False)
img = x_train[0]
label=t_train[0]
print(label)print(img.shape)
img = img.reshape(28,28)
print(img.shape)img_show(img)

在这里插入图片描述
这里需要注意的是,flatten=True时读入的图像是以一列(一维)NumPy数组的形式保存的。因此,显示图像时,需要把它变为原来的28像素 × 28像素的形状。可以通过reshape()方法的参数指定期望的形状,更改NumPy数组的形状。此外,还需要把保存为NumPy数组的图像数据转换为PIL用的数据对象,这个转换处理由Image.fromarray()来完成。


http://www.ppmy.cn/news/139276.html

相关文章

OCR手写字体生成数据

简述: 根据CASIA的HWDB1.X的手写字符生成了一些带有字符级标注、行级别标注的文本数据,分享给需要的同学。 生成基于不同人的字体、字体大小、行间字体间隔、旋转角度、文本布局的文字贴图。 生成素材:共65种贴图背景, 由420位手写…

【C++】指针 - 定义和使用,所占内存空间,空指针,野指针,const 修饰指针,指针和数组,指针和函数

文章目录 1. 定义和使用2. 所占内存空间3. 空指针4. 野指针5. const 修饰指针6. 指针和数组7. 指针和函数 1. 定义和使用 数据类型 * 变量名; 指针的作用是,可以通过指针间接访问内存。 内存编号是从 0 开始记录的,一般用十六进制数字表示。可以利用指…

Hibernate框架【四】——基本映射——多对一和一对多映射

系列文章目录 Hibernate框架【三】——基本映射——一对一映射 基本映射——多对一和一对多映射 系列文章目录前言一、多对一映射是什么?1.案例:现在有两个实体User实体和Group,其中多个User属于一个Group,表现出多对一的关系。①…

Nginx通过用户IP获取所在国家及地理位置

文章目录 前言一、GeoLite2-Country是什么?二、使用步骤2.1 下载GeoLite2-Country数据库文件,并导入Nginx2.2 配置Nginx模块2.3 使用变量来获取国家信息2.4 验证配置 总结 前言 Nginx是一款高性能、轻量级的Web服务器和反向代理服务器。它最初设计目的是…

win11的docker-desktop安装

1、docker-desktop安装,参考 Windows系统上的Ubuntu wsl使用以及wsl连接远程服务器指南 - 知乎 a、官网直接下载安装(2个地址任选) https://www.docker.com/get-started/ https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20In…

液冷数据中心的液体为何物

大家都知道IT设备是不能碰水的,遇到水会出现短路的情况,IT设备运行会出现发热的问题,降温主要依靠风扇散热和空调制冷。对于大型数据中心来说,设备降温是一大难题,近年来出现了新型的液冷数据中心。 液冷数据中…

应用计算机散热的原理是什么,水冷散热器是什么原理?水冷可以带给机箱多大的散热作用?...

用户若是CPU安装了水冷散热器,就可以利用水快速导热和散热的特性加强主机硬件的散热效果,和普通风扇的散热效果相比,水冷可以更加有效的降低硬件温度和热量散发速度。阅读下文了解水冷散热器的原理和作用。 CPU水冷散热器是指使用液体在泵的带…