Tensorflow笔记(5):MNIST数据集输出手写数字识别准确率

这篇博客介绍了如何使用Tensorflow搭建神经网络,通过MNIST数据集训练模型,以识别手写数字,包括前向传播、反向传播、准确率测试和应用的详细步骤。
摘要由CSDN通过智能技术生成

本篇博文的内容是:搭建神经网络,在mnist数据集上训练模型,输出手写数字识别准确率

 

5.1
√t mnist  数据集 :包含 7 7  万张 黑底白字手写数字 图片, 其中 55000  张为训练集 ,5000  张为验证集,1 10 0000  张 为测试集 。每张图片大小为28*28  像素,图片中 纯 黑色像素值为0 , 纯 白色像素值为1 。数据集的标签是长度为 10  的一维数组,数组中每个元素 索引号表示对应数字出现的概率。

在将 mnist 数据集作为输入喂入神经网络时,需先将数据集中每张图片变为长度784 一维数组,将该数组作为神经网络输入特征喂入神经网络。

例如:
一张数字手写体图片变成长度为 784 的一维数组[0.0.0.0.0.231 0.235 0.459……0.219 0.0.0.0.]输入神经网络。该图片对应的标签为[0.0.0.0.0.0.1.0.0.0],标签中索引号为 6 的元素为 1,表示是数字 6 出现的概率为 100%,则该图
片对应的识别结果是 6。

 

其他废话就不多说直接上程序,手写数字识别的程序总共有四个文件,分别是mnist_forward.py,mnist_backward.py,mnist_test.py,mnist_app.py分别是前向传播,反向传播,准确率测试和我们的手写数字识别这四个文件。

1.首先看前向传播:mnist_forward.py

#coding:utf-8
'''BP神经前向传播'''
import tensorflow as tf

INPUT_NODE = 784#神经网络的输入节点是784个,正好是28*28*1
OUTPUT_NODE = 10#输出点
LAYER1_NODE = 500#隐藏层节点的个数
#得到我们的权值矩阵函数
def get_weight(shape,regularizer):
    w = tf.Variable(tf.truncated_normal(shape,stddev = 0.1))
    '''如果使用正则化,则将每一个w的正则化记录到总loss中的这一行代码'''
    if regularizer !=None: tf.add_to_collection('losses',tf.contrib.layers.l2_regularizer(regularizer)(w))
    return w
#得到偏置项函数
def get_bias(shape):
    b = tf.Variable(tf.zeros(shape))
    return b
#定义前向传播的函数
def forward(x,regularizer):
    w1 = get_weight([INPUT_NODE,LAYER1_NODE],regularizer)
    b1 = get_bias([LAYER1_NODE])
    y1 = tf.nn.relu(tf.matmul(x,w1)+b1)

    w2 = get_weight([LAYER1_NODE,OUTPUT_NODE],regularizer)
    b2 = get_bias([OUTPUT_NODE])
    y = tf.matmul(y1,w2)+b2
    return y

2.反向传播:mnist_backward.py

#coding:utf-8
#反向传播
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data  #

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

阿6先生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值