05_利用神经网实现MINST手写数字识别

利用神经网实现MNIST手写数字识别

1、实验描述

  • 使用Python编程,输入为MNIST训练数据集,首先通过Tensorflow载入MNIST数据集并进行相应的特征提取等处理,其次采用Softmax
    Regression算法对数据集进行概率估算,然后训练模型构建神经网络,通过评估来对模型进一步地调整优化,进而便可以根据优化的模型预测识别新的手写数字。

  • 实验时长:45分钟

  • 主要步骤:

    • MNIST数据集加载

    • Softmax Regression算法进行概率估算

    • 训练测试模型构建神经网络

    • 评估模型计算准确率

2、实验环境

  • 系统版本:CentOS7

  • Python版本:3.6.5

  • Matplotlib版本:Matplotlib 2.2.2

  • Anaconda版本:Anaconda3.4.1

  • Numpy版本:1.14.3

  • scikit-learn版本:0.19.1

3、相关技能

  • Python编程

  • Softmax Regression构建神经网络

  • Tensorflow编程

4、相关知识点

  • MNIST概述

    • MNIST是一个计算机视觉数据集,它包含70000张手写数字的灰度图片,其中每一张图片包含28*28个像素点。可以用一个数字数组来表示这张图片:

在这里插入图片描述

每一张图片都有对应的标签,也就是图片对应的数字,例如上面图片的标签为1。

  • 数据集被分成两部分:60000行的训练数据集和10000行的测试数据集。其中:60000行的训练集分拆为55000行的训练集和5000行的验证集。

60000行的训练数据是一个形状为[60000,784]的张量,第一个维度数字用来索引图片,第二个维度数字用来索引每张图片中的像素点。在此张量里的每一个元素,都表示某张图片里的某个像素的强度值,值介于0和1之间。60000行的训练数据集标签是介于0到9的数字,用来描述给定图片里表示的数字,称为“one-hot
vectors”。一个one-hot向量除了某一位的数字是1以外,其余各维度数字都是0。

  • Tensorflow编程模型简介与使用

  • Tensorflow是一个采用数据流图,用于数值计算的开源软件库。节点在图中表示数学操作,图中的线则表示在节点间相互联系的多维数据数组,即张量。Tensorflow的计算表示为一个计算图,图中的每个节点可以有任意多个输入和输出,每个节点描述了一种运算操作。

  • 在Tensorflow中,使用图(graph)来表示计算任务,在被称之为会话(session)的上下文(context)中执行图,使用tensor表示数据,通过变量(variable)维护状态,使用feed和fetch可以为任意的操作赋值或从其中获取数据。

  • Softmax Regression算法

  • Softmax
    Regression是Logistic回归的推广,Logistic回归是处理二分类问题的,而Softmax
    Regression是处理多分类问题的。Softmax
    Regression将可以判定为某类的特征相加,然后将这些特征转化为判定是这一类的概率,估算这一类的概率,将概率最大的作为结果输出。求出以下的概率值:

在这里插入图片描述

损失函数为

在这里插入图片描述

其中I{·}是一个指示性函数,意思是大括号里的值为真时,该函数的结果为1,否则为0。

  • 神经网络

  • 神经网络是将许多个单一“神经元”联结在一起,一个“神经元”的输出是另一个“神经元”的输入。下图即为一个简单的神经网络:

在这里插入图片描述

圆圈表示神经网络的输入,标上“+1”的圆圈称为偏置节点。神经网络最左边的一层为输入层,最右边一层为输出层,中间所有节点组成一层叫做隐藏层。

  • 神经网络主要包括三个部分:结构、激励函数、学习规则。对于一个神经网络,存在输入层、隐藏层和输出层。除了输入层,每一层的节点都包含一个非线性变换,使得神经网络可以拟合任意一个函数。对于每一层的神经元,都在激励函数的作用下工作,激励函数通常是sigmoid、tanh、relu等。另外,神经网络也存在不同的算法来训练学习,例如前馈型、反馈型和自组织。通过不断的学习,能够得到一个模型,对输入预测出一个期望的输出。

5、实现效果

  • 神经网训练过程输出及最终结果如下图:

在这里插入图片描述

图 1

6、实验步骤

6.1进入/home/zkpk/pycharm-2017.3.5/bin目录,切换到root用户,输入密码(zkpk)


                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JTZ001

你的鼓励是我创作的最大动力?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值