本实例使用的数据集是MNIST手写数字图像集。其由0到9的数字图像构成的。训练图像有6万张, 测试图像有1万张,这些图像可以用于学习和推理。图像数据为28像素 × 28像素的灰度图像(单通道),各个像素的取值在0到255之间。每个图像数据都相应地标有“7”“2”“1”等标签。接下来进行具体的手写数字识别的python代码实现。
1.MNIST数据集
import sys, os
import numpy as np
from PIL import Image
sys.path.append(os.pardir) # 将父目录的路径添加到sys.path中。这可能是因为你希望在当前脚本或程序中导入父目录中的模块,而默认情况下Python不会在父目录中查找模块。
from dataset.mnist import load_mnist #load_mnist函数以“(训练图像 ,训练标签 ),(测试图像,测试标签 )”的形式返回读入的MNIST数据。
# 第一次调用会花费几分钟 ……
(x_train, t_train), (x_test, t_test) = load_mnist(flatten=True,
normalize=False) # flatten=True: 表示是否将图像展平为一维数组。如果为True,每个图像将从28x28的矩阵变为长度为784的一维数组。normalize=False: 表示是否对图像进行归一化处理。如果为True,图像的像素值将被缩放到0到1之间。“one_hot_label=False”第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