mnist手写数字识别

这篇博客介绍了如何使用TensorFlow搭建一个3层全连接的神经网络模型,进行MNIST手写数字识别。内容包括设置参数、构建神经网络、训练模型以及调用MNIST数据集。参考了《tensorflow实战谷歌深度学习框架》一书,并提供了详细的代码实现,运行程序即可自动下载MNIST数据集。
摘要由CSDN通过智能技术生成

    mnist算是图像识别领域的HelloWorld。也离我发表上一篇博客过去了快一个月的时间了。可以说是比较惭愧的。主要是看了看之前一直从未接触的机器学习的算法。想想还是蛮多的。

    在做之前一定要有一个python3+tensorflow的环境。可以参考我上一篇博客。环境搭建

    废话不说了,这次的主题是搭建一个mnist的数字识别模型。其中主要内容有以下几部分组成。

    1.设置初始参数,比如说输入输出节点个数,初始学习率等等。

    2.搭建一个3层全连接的神经模型,里面用了relu去线性化

    3.搭建训练模型,里面用了滑动平均模型优化weight和baises;用指数衰减模型优化学习率;通过l2正则化考虑模型复杂度占总损失的比率;

    4.调用mnist里的图片。写一个session来调用训练模型

    值得一提的是,mnist手写数字的识别我主要参考的是《tensorflow实战谷歌深度学习框架》这本书。里面详细讲了我在第3步中提到的算法。可以说给我提供了很大的帮助。

    接下来的代码就是具体的实现过程。如果没有mnist数据集的话,需要科学上网来下载。只要运行程序就可以自动下载了。代码的注释部分主要分析了各个模块的模型的意义。也是我纯手打的,算的上是我学习的成果。

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
INPUT_NODE           = 784   #输入节点,因为是28*28的像素,所以这里为784个输入节点
OUTPUT_NODE          = 10    #输出节点,因为输出是0-9中的一数字。这里指的是一个十分类
LAYER1_NODE          = 500   #隐藏层节点数
BATCH_SIZE           = 100   #每一个BATCH的大小
LEARNING_RATE_BASE   = 0.8   #基础学习率,指数衰减函数有一个要设置基础学习率的地方,接下来随着轮数的上升,学习率逐渐下降
LEARNING_RATE_DECAY  = 0.99  #指的是基础学习率的衰减值,每过指定轮数,学习率的0.99次方
REGULARIZATION_RATE  = 0.0001#指的是模型复杂度所占损失在总损失中的比例
TRAINING_STEP        = 30000 #代表30000张数据图片
MOVING_AVERAGE_DECAY = 0.99  #初始衰减率当求(1+step)/(10+step)与这个MOVING_AVERAGE_DECAY比较取最小值时作比较

'''
这里构建三层全连接神经网络,包括输入层,隐藏层,输出层。考虑了是否使用滑动平均值的两种情况。
当不使用时,weight和biases一直是一个定值不会发生变化。
当有avg_class输入时,下面对应的variable_averages_op是随着训练轮数增加不断变化的一个变量
avg_class.average()相当于在求括号内的数经过很多轮次后的平均值
因为 tf.trainable_variables()会自动训练trainable不是False的Variable变量
'''

def inference(input_tensor, avg_class, weights1, biases1, weights2,
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值