1、基于Keras、Mnist手写数字识别数据集构建全连接(FC)神经网络训练模型

前言

提示:
1、本案例采用Keras,全连接神经网络相关知识实现,请读者自行了解,本文不再详细叙述;
2、本案例使用开源数据集Mnist(手写数字识别数据集),如果无法下载数据集,可尝试使用以下办法:


以下是本篇文章正文内容,下面案例仅供参考

一、MNIST数据集是什么?

MNIST 数据集来自美国国家标准与技术研究所, National Institute of Standards and Technology (NIST)。训练集 (training set) 由来自 250 个不同人手写的数字构成,其中 50% 是高中学生,50% 来自人口普查局 (the Census Bureau) 的工作人员。测试集(test set) 也是同样比例的手写数字数据。

数据集包含60,000个用于训练的示例和10,000个用于测试的示例。MNIST 数据集包含了四个部分:

  • Training set images: train-images-idx3-ubyte.gz (包含 60,000 个样本)
  • Training set labels: train-labels-idx1-ubyte.gz (包含 60,000 个标签)
  • Test set images: t10k-images-idx3-ubyte.gz (包含 10,000 个样本)
  • Test set labels: t10k-labels-idx1-ubyte.gz (包含 10,000 个标签)

训练数据集包含 60,000 个样本,测试数据集包含 10,000 样本。在 MNIST 数据集中的每张图片由 28 x 28 个像素点构成,每个像素点用一个灰度值表示。存储在28 x 28 的二维数组中,将这些像素展开为一个每行 784 个值的一维的行向量,每行就是代表了一张图片。

二、构建神经网络训练模型

1.导入库

导入Keras库:layers,models,datasets,utils
Dense方法,Sequential方法,utils.np_utils方法

代码如下(示例):

from keras.layers import Dense
from keras.models import Sequential
from keras.datasets import mnist
from keras.utils import np_utils

2.载入数据

使用以下代码加载Mnist手写数字识别数据集数据(注意红色部分改变为你刚才存储的文件路径)"D:\mydatasets\mnist.npz"

代码如下(示例):

mnist = tf.keras.datasets.mnist
# "D:\mydatasets\mnist.npz" 是Mnist手写数字识别数据集文件所在路径
(x_train,y_train),(x_test,y_test) = mnist.load_data("D:\mydatasets\mnist.npz")

由于数据集包含60,000个用于训练的示例和10,000个用于测试的示例,即训练集中存在60000个样本,测试集中存在10000个样本,其中每一个样本均为28 x 28像素的图片。
由此得知,

  • x_train.shape: (60000, 28, 28)
    x_test.shape:(10000, 28, 28)
    y_train.shape:(60000,) # 训练集标签
    y_test.shape:(10000,) # 测试集标签

3.数据处理

样本像素展开

  • 以训练集为例,对每一个样本进行像素展开(降维),得到 784 个值的一维的行向量,每行就是代表了一张图片,此时将得到一个行代表每一个图片样本,列代表样本个数的(60000, 784)的二维数组。

数据归一化处理

  • 在 MNIST 数据集中的每张图片由 28 x 28 个像素点构成,每个像素点用一个灰度值表示。因此对每个像素进行归一化处理,有助于后续可以加快梯度下降的求解速度,即提升模型的收敛速度,从而优化模型训练速度,减少错误率(error),并提高模型识别精度(accuracy)。

标签转换独热编码

  • 对标签数据转换为分类的 one-hot (独热)编码。

    原理:One-Hot编码,又称为一位有效编码,主要是采用位状态寄存器来对个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效。独热编码是利用0和1表示一些参数,使用N位状态寄存器来对N个状态进行编码。

    简单来说:
    数字字体识别0~9中,独热编码分别为
    0:1000

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值