# 前向传播:描述了网络结构  minist_forward.py
# 反向传播:描述了模型参数的优化方法  mnist_backward.py
# 测试输出准确率minist_test.pyimport tensorflow as tf# 首先定义神经网络的相关参数
INPUT_NODE = 784   #神经网络输入节点是784个,因为输入是图片像素值,每张图片28*28,共784像素点,每个像素点是0~1之间的浮点数,这784个点组成一个一维数组
OUTPUT_NODE = 10   #输出10个数,每个数表示对应的索引号出现的概率,实现了十分类
LAYER1_NODE = 500  # 定义了隐藏层的节点个数def get_weight(shape, regularizer):w = tf.Variable(tf.truncated_normal(shape, stddev = 0.1))  #更透过tf.Vwariable,在训练神经网络时,随机生成参数wif regularizer != None:  #如果使用正则化,则将每个变量的损失加入到总损失lossestf.add_to_collection('losses',tf.contrib.layers.l2_regularizer(regularizer)(w))return wdef get_bias(shape):b = tf.Variable(tf.zeros(shape))return bdef 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)  #第一层参数w1/b1/y1w2 = get_weight([LAYER1_NODE,OUTUT_NODE],regularizer)b1 = get_bias([OUTPUT_NODE])y = tf.matmul(y1,w2) + b2   #第二层参数w1/b2/y y直接输出return y   #因为要对输出使用softmax函数,使它符合概率分布,所以输出y不过value函数
# 前向传播:描述了网络结构  minist_forward.py
# 反向传播:描述了模型参数的优化方法  mnist_backward.py
# 测试输出准确率minist_test.pyimport tensorflow as tf
from tensorflow.examples.tutorials.minist import input_date
import minist_forward
import os# 首先定义神经网络的相关参数
BATCH_SIZE = 200              # 定义每轮喂入神经网络多少张图片
LEARNING_RATE_BASE = 0.1      # 学习率
LEARNING_RATE_DECAY = 0.99    # 衰减率
REGULARIZER = 0.0001          # 正则化系数
STEPS = 50000                 # 训练50000轮
MOVING_AVERAGE_DECAY = 0.99   # 滑动平均衰减率
MODEL_SAVE_PATH = "./model"   # 模型保存路径
MODEL_NAME = "mnist_model"    # 模型保存文件名def backward(mnist):          # backward函数中读入mnistx = tf.placeholder(tf.float32,[None,mnist_forward.INPUT_NODE])      # 用placeholder给x占位y_ = tf.placeholder(tf.float32, [None, mnist_forward.OUTPUT_NODE])  # 用placeholder给y_占位y = minist_forward.forward(x,REGULARIZER)                           # 用前向传播函数计算输出yglobal_step = tf.Variable(0,trainable=False)     # 给轮数计数器global_step赋初值,定义为不可训练ce = tf.nn.sparse_softmax_cross_entropy_with_logits(logits = y,labels = tf.arg_max(y_,1))cem = tf.reduce_mean(ce)loss = cem + tf.add_n(tf.get_collection('losses'))    # 调用包含正则化的损失函数losslearning_rate = tf.train.exponential_decay(    # 定义指数衰减学习率LEARNING_RATE_BASE,global_step,mnist.train.num_examples / BATCH_SIZE,LEARNING_RATE_DECAY,staircase=True)train_step = tf.train.ProximalGradientDescentOptimizer(learning_rate).minimize(loss,global_step=global_step)ema = tf.train.ExponentialMovingAverage(MOVING_AVERAGE_DECAY,global_step)ema_op = ema.apply(tf.trainable_variables())with tf.control_dependencies([train_step,ema_op]):train_op = tf.no_op(name = 'train')saver = tf.train.Saver()  # 实例化Saverwith tf.Session as sess:        # 在with结构中初始化所有变量init_op = tf.gloabal_variables_initiator()sess.run(init_op)for i in range(STEPS):     # 用for循环迭代steps轮xs,ys = mnist.train.next_batch(BATCH_SIZE) # 每次读入BATCH_SIZE图片和标签,喂入神经网络进行训练_,loss_value,step = sess.run([train_op,loss,global_step],feed_dict={x:xs,y_:ys}) # 必须执行sess.run才能得到模型结果if i % 1000 == 0:print("After %d training steps, loss on training batch is %g"%(step,loss_value))saver.save(sess,os.path.join(MODEL_SAVE_PATH,MODEL_NAME,global_step=global_step))def main():mnist = input_date.read_data_sets("./data/",one_hot=True)backward(mnist)if __name__ == __main__:main()

北京大学曹健——Tensorflow笔记 05 MNIST数据集输出手写数字识别准确率相关推荐

  1. 基于TensorFlow和mnist数据集的手写数字识别系统 ,可识别电话号码,识别准确率高,有对比实验,两组模型,可讲解代码

    基于TensorFlow和mnist数据集的手写数字识别系统 ,可识别电话号码,识别准确率高,有对比实验,两组模型,可讲解代码

  2. DL之CNN:自定义SimpleConvNet【3层,im2col优化】利用mnist数据集实现手写数字识别多分类训练来评估模型

    DL之CNN:自定义SimpleConvNet[3层,im2col优化]利用mnist数据集实现手写数字识别多分类训练来评估模型 目录 输出结果 设计思路 核心代码 更多输出 输出结果 设计思路 核心 ...

  3. MNIST数据集实现手写数字识别(基于tensorflow)

    ------------先看看别人的博客--------------------- Tensorflow 实现 MNIST 手写数字识别         用这个的代码跑通了 使用Tensorflow和 ...

  4. matlab朴素贝叶斯手写数字识别_基于MNIST数据集实现手写数字识别

    介绍 在TensorFlow的官方入门课程中,多次用到mnist数据集.mnist数据集是一个数字手写体图片库,但它的存储格式并非常见的图片格式,所有的图片都集中保存在四个扩展名为idx*-ubyte ...

  5. 神经网络——实现MNIST数据集的手写数字识别

    由于官网下载手写数字的数据集较慢,因此提供便捷下载地址如下 手写数字的数据集MNIST下载:https://download.csdn.net/download/gaoyu1253401563/108 ...

  6. 【机器学习】基于mnist数据集的手写数字识别

    文章目录 第1关:创建训练样本批量生成器 第2关:创建卷积神经网络

  7. 【MLP实战】001:基于Minist数据集的手写数字识别

    本文又是一篇基于Minist数据集的手写数字识别. 首先,mnist数据集: 链接:https://pan.baidu.com/s/1z7R7_jnDKZm9F7M6n8hiIw 提取码:rn8z 首 ...

  8. tensorflow应用:双向LSTM神经网络手写数字识别

    tensorflow应用:双向LSTM神经网络手写数字识别 思路 Python程序1.建模训练保存 Tensorboard检查计算图及训练结果 打开训练好的模型进行预测 思路 将28X28的图片看成2 ...

  9. matlab 对mnist手写数字数据集进行判决分析_人工智能TensorFlow(十四)MINIST手写数字识别...

    MNIST是一个简单的视觉计算数据集,它是像下面这样手写的数字图片: MNIST 每张图片还额外有一个标签记录了图片上数字是几,例如上面几张图的标签就是:5.0.4.1. MINIST数据 MINIS ...

最新文章

  1. 先理解Mask R-CNN的工作原理,然后构建颜色填充器应用
  2. 李洪强漫谈iOS开发[C语言-038]-if else if语句
  3. 如何真正提高ASP.NET网站的性能
  4. Arduino笔记-Arduino UNO与WeMos D1串口通信(数据交互)
  5. 修复 IE 的文本3像素偏移Bug
  6. 【BZOJ1060】【codevs1435】时态同步,我可以叫它树形递推吗
  7. python特效电子相册_用Python和Conky做个电子相册,美化你的Linux桌面
  8. github 使用方法总结 还有一部分不太懂
  9. 模拟实现和深入理解Node Stream内部机制
  10. python模拟支付宝蚂蚁森林的能量产生过程_蚂蚁森林能量产生规则
  11. 微信怎么自动加好友java_Xposed-微信自动加好友功能实现
  12. HttpClient 4 和 HttpClient 3 设置超时
  13. 神奇的css之 -webkit-background-clip: text; 五彩斑斓的文字效果
  14. Python-pygsheets模块(读写Google谷歌文档)
  15. 饿了么商家开放平台踩坑记录2,php更新商品信息提示attribute:[]不是一个有效的JSON对象 By勤勤学长 Qq318692996
  16. 为什么我总是更新不了头像啊
  17. java ocr 表格票据识别_OCR表格票据识别技术。
  18. iOS_AutoLayout
  19. 数据分析——用户流失分析
  20. time(),date(),microtime()…

热门文章

  1. 玩转华为ENSP模拟器系列 | 通过FTP访问其他设备文件配置举例
  2. KALI的三种安装方式
  3. pdf怎么转换成ppt?4种方法1分钟处理
  4. 苹果系统和安卓系统的区别_安卓手机刷苹果ios系统,会发生什么
  5. C:3.4-3.5 if_else内嵌、练习
  6. 攻防世界-MISC:give_you_flag
  7. java: 程序包org.apache.hadoop.hive.metastore不存在
  8. 【电气专业知识问答】问:如何分析、判断与处理电压互感器二次电压消失的故障?
  9. 表格table设置padding
  10. linux上如何分辨一个二进制可执行文件是debug还是release的