北京大学曹健——Tensorflow笔记 05 MNIST数据集输出手写数字识别准确率
# 前向传播:描述了网络结构 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数据集输出手写数字识别准确率相关推荐
- 基于TensorFlow和mnist数据集的手写数字识别系统 ,可识别电话号码,识别准确率高,有对比实验,两组模型,可讲解代码
基于TensorFlow和mnist数据集的手写数字识别系统 ,可识别电话号码,识别准确率高,有对比实验,两组模型,可讲解代码
- DL之CNN:自定义SimpleConvNet【3层,im2col优化】利用mnist数据集实现手写数字识别多分类训练来评估模型
DL之CNN:自定义SimpleConvNet[3层,im2col优化]利用mnist数据集实现手写数字识别多分类训练来评估模型 目录 输出结果 设计思路 核心代码 更多输出 输出结果 设计思路 核心 ...
- MNIST数据集实现手写数字识别(基于tensorflow)
------------先看看别人的博客--------------------- Tensorflow 实现 MNIST 手写数字识别 用这个的代码跑通了 使用Tensorflow和 ...
- matlab朴素贝叶斯手写数字识别_基于MNIST数据集实现手写数字识别
介绍 在TensorFlow的官方入门课程中,多次用到mnist数据集.mnist数据集是一个数字手写体图片库,但它的存储格式并非常见的图片格式,所有的图片都集中保存在四个扩展名为idx*-ubyte ...
- 神经网络——实现MNIST数据集的手写数字识别
由于官网下载手写数字的数据集较慢,因此提供便捷下载地址如下 手写数字的数据集MNIST下载:https://download.csdn.net/download/gaoyu1253401563/108 ...
- 【机器学习】基于mnist数据集的手写数字识别
文章目录 第1关:创建训练样本批量生成器 第2关:创建卷积神经网络
- 【MLP实战】001:基于Minist数据集的手写数字识别
本文又是一篇基于Minist数据集的手写数字识别. 首先,mnist数据集: 链接:https://pan.baidu.com/s/1z7R7_jnDKZm9F7M6n8hiIw 提取码:rn8z 首 ...
- tensorflow应用:双向LSTM神经网络手写数字识别
tensorflow应用:双向LSTM神经网络手写数字识别 思路 Python程序1.建模训练保存 Tensorboard检查计算图及训练结果 打开训练好的模型进行预测 思路 将28X28的图片看成2 ...
- matlab 对mnist手写数字数据集进行判决分析_人工智能TensorFlow(十四)MINIST手写数字识别...
MNIST是一个简单的视觉计算数据集,它是像下面这样手写的数字图片: MNIST 每张图片还额外有一个标签记录了图片上数字是几,例如上面几张图的标签就是:5.0.4.1. MINIST数据 MINIS ...
最新文章
- 先理解Mask R-CNN的工作原理,然后构建颜色填充器应用
- 李洪强漫谈iOS开发[C语言-038]-if else if语句
- 如何真正提高ASP.NET网站的性能
- Arduino笔记-Arduino UNO与WeMos D1串口通信(数据交互)
- 修复 IE 的文本3像素偏移Bug
- 【BZOJ1060】【codevs1435】时态同步,我可以叫它树形递推吗
- python特效电子相册_用Python和Conky做个电子相册,美化你的Linux桌面
- github 使用方法总结 还有一部分不太懂
- 模拟实现和深入理解Node Stream内部机制
- python模拟支付宝蚂蚁森林的能量产生过程_蚂蚁森林能量产生规则
- 微信怎么自动加好友java_Xposed-微信自动加好友功能实现
- HttpClient 4 和 HttpClient 3 设置超时
- 神奇的css之 -webkit-background-clip: text; 五彩斑斓的文字效果
- Python-pygsheets模块(读写Google谷歌文档)
- 饿了么商家开放平台踩坑记录2,php更新商品信息提示attribute:[]不是一个有效的JSON对象 By勤勤学长 Qq318692996
- 为什么我总是更新不了头像啊
- java ocr 表格票据识别_OCR表格票据识别技术。
- iOS_AutoLayout
- 数据分析——用户流失分析
- time(),date(),microtime()…
热门文章
- 玩转华为ENSP模拟器系列 | 通过FTP访问其他设备文件配置举例
- KALI的三种安装方式
- pdf怎么转换成ppt?4种方法1分钟处理
- 苹果系统和安卓系统的区别_安卓手机刷苹果ios系统,会发生什么
- C:3.4-3.5 if_else内嵌、练习
- 攻防世界-MISC:give_you_flag
- java: 程序包org.apache.hadoop.hive.metastore不存在
- 【电气专业知识问答】问:如何分析、判断与处理电压互感器二次电压消失的故障?
- 表格table设置padding
- linux上如何分辨一个二进制可执行文件是debug还是release的