tensorflow应用于手写数字识别(第二版)
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data#载入数据集
mnist = input_data.read_data_sets("F:\\TensorflowProject\\MNIST_data",one_hot=True) #每个批次的大小,训练时一次100张放入神经网络中训练
batch_size = 100 #计算一共有多少个批次
n_batch = mnist.train.num_examples//batch_size #定义两个placeholder
x = tf.placeholder(tf.float32,[None,784])
#0-9十个数字
y = tf.placeholder(tf.float32,[None,10])
keep_prob = tf.placeholder(tf.float32)
lr = tf.Variable(0.001,dtype=tf.float32) #创建一个神经网络
# W = tf.Variable(tf.zeros([784,10]))
# b = tf.Variable(tf.zeros([10]))
W1 = tf.Variable(tf.truncated_normal([784,500],stddev=0.1))
b1 = tf.Variable(tf.zeros([500])+0.1)
L1 = tf.nn.tanh(tf.matmul(x,W1)+b1)
L1_drop = tf.nn.dropout(L1,keep_prob) #隐藏层1
W2 = tf.Variable(tf.truncated_normal([500,300],stddev=0.1))
b2 = tf.Variable(tf.zeros([300])+0.1)
L2 = tf.nn.tanh(tf.matmul(L1_drop,W2)+b2)
L2_drop = tf.nn.dropout(L2,keep_prob) #隐藏层2
W3 = tf.Variable(tf.truncated_normal([300,10],stddev=0.1))
b3 = tf.Variable(tf.zeros([10])+0.1)
#L3 = tf.nn.tanh(tf.matmul(L2_drop,W3)+b3)
#L3_drop = tf.nn.dropout(L3,keep_prob)
prediction = tf.nn.softmax(tf.matmul(L2_drop,W3)+b3) #W4 = tf.Variable(tf.truncated_normal([1000,10],stddev=0.1))
#b4 = tf.Variable(tf.zeros([10])+0.1)
#prediction = tf.nn.softmax(tf.matmul(L3_drop,W4)+b4) #二次代价函数
#loss = tf.reduce_mean(tf.square(y-prediction))
#交叉熵
#loss值最小的时候准确率最高
#loss = tf.nn.softmax_cross_entropy_with_logits(labels=y,logits=prediction)
loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y,logits=prediction))
#使用梯度下降法
#train_step = tf.train.GradientDescentOptimizer(0.2).minimize(loss)
#训练
train_step = tf.train.AdamOptimizer(lr).minimize(loss) #初始化变量
init = tf.global_variables_initializer() #结果存放在一个布尔型列表中
correct_prediction = tf.equal(tf.argmax(y,1),tf.argmax(prediction,1))
#求准确率
accuracy = tf.reduce_mean(tf.cast(correct_prediction,tf.float32))
#
with tf.Session() as sess:
sess.run(init)
for epoch in range(30):
sess.run(tf.assign(lr,0.001*(0.95 ** epoch)))
for batch in range(n_batch):
batch_xs,batch_ys = mnist.train.next_batch(batch_size)
sess.run(train_step,feed_dict={x:batch_xs,y:batch_ys,keep_prob:1.0}) #测试准确率
#test_acc = sess.run(accuracy,feed_dict={x:mnist.test.images,y:mnist.test.labels,keep_prob:1.0})
#train_acc = sess.run(accuracy,feed_dict={x:mnist.train.images,y:mnist.train.labels,keep_prob:1.0})
learning_rate = sess.run(lr)
test_acc = sess.run(accuracy,feed_dict={x:mnist.test.images,y:mnist.test.labels,keep_prob:1.0})
print("Iter: "+str(epoch)+" ,Testing Accuracy "+str(test_acc)+" Train : "+str(learning_rate))
####运行效果
Extracting F:\TensorflowProject\MNIST_data\train-images-idx3-ubyte.gz
Extracting F:\TensorflowProject\MNIST_data\train-labels-idx1-ubyte.gz
Extracting F:\TensorflowProject\MNIST_data\t10k-images-idx3-ubyte.gz
Extracting F:\TensorflowProject\MNIST_data\t10k-labels-idx1-ubyte.gz
Iter: 0 ,Testing Accuracy 0.9509 Train : 0.001
Iter: 1 ,Testing Accuracy 0.9622 Train : 0.00095
Iter: 2 ,Testing Accuracy 0.9669 Train : 0.0009025
Iter: 3 ,Testing Accuracy 0.9691 Train : 0.000857375
Iter: 4 ,Testing Accuracy 0.9725 Train : 0.000814506
Iter: 5 ,Testing Accuracy 0.9748 Train : 0.000773781
Iter: 6 ,Testing Accuracy 0.9752 Train : 0.000735092
Iter: 7 ,Testing Accuracy 0.9769 Train : 0.000698337
Iter: 8 ,Testing Accuracy 0.9778 Train : 0.00066342
Iter: 9 ,Testing Accuracy 0.9779 Train : 0.000630249
Iter: 10 ,Testing Accuracy 0.9777 Train : 0.000598737
Iter: 11 ,Testing Accuracy 0.9785 Train : 0.0005688
Iter: 12 ,Testing Accuracy 0.98 Train : 0.00054036
Iter: 13 ,Testing Accuracy 0.9798 Train : 0.000513342
Iter: 14 ,Testing Accuracy 0.9796 Train : 0.000487675
Iter: 15 ,Testing Accuracy 0.9801 Train : 0.000463291
Iter: 16 ,Testing Accuracy 0.9805 Train : 0.000440127
Iter: 17 ,Testing Accuracy 0.9803 Train : 0.00041812
Iter: 18 ,Testing Accuracy 0.9808 Train : 0.000397214
Iter: 19 ,Testing Accuracy 0.9799 Train : 0.000377354
Iter: 20 ,Testing Accuracy 0.9798 Train : 0.000358486
Iter: 21 ,Testing Accuracy 0.9802 Train : 0.000340562
Iter: 22 ,Testing Accuracy 0.9812 Train : 0.000323534
Iter: 23 ,Testing Accuracy 0.9813 Train : 0.000307357
Iter: 24 ,Testing Accuracy 0.9816 Train : 0.000291989
Iter: 25 ,Testing Accuracy 0.9798 Train : 0.00027739
Iter: 26 ,Testing Accuracy 0.9822 Train : 0.00026352
Iter: 27 ,Testing Accuracy 0.9816 Train : 0.000250344
Iter: 28 ,Testing Accuracy 0.9822 Train : 0.000237827
Iter: 29 ,Testing Accuracy 0.9811 Train : 0.000225936
tensorflow应用于手写数字识别(第二版)的更多相关文章
- Android+TensorFlow+CNN+MNIST 手写数字识别实现
Android+TensorFlow+CNN+MNIST 手写数字识别实现 SkySeraph 2018 Email:skyseraph00#163.com 更多精彩请直接访问SkySeraph个人站 ...
- 基于tensorflow的MNIST手写数字识别(二)--入门篇
http://www.jianshu.com/p/4195577585e6 基于tensorflow的MNIST手写字识别(一)--白话卷积神经网络模型 基于tensorflow的MNIST手写数字识 ...
- 基于TensorFlow的MNIST手写数字识别-初级
一:MNIST数据集 下载地址 MNIST是一个包含很多手写数字图片的数据集,一共4个二进制压缩文件 分别是test set images,test set labels,training se ...
- Tensorflow之MNIST手写数字识别:分类问题(1)
一.MNIST数据集读取 one hot 独热编码独热编码是一种稀疏向量,其中:一个向量设为1,其他元素均设为0.独热编码常用于表示拥有有限个可能值的字符串或标识符优点: 1.将离散特征的取值扩展 ...
- Tensorflow实现MNIST手写数字识别
之前我们讲了神经网络的起源.单层神经网络.多层神经网络的搭建过程.搭建时要注意到的具体问题.以及解决这些问题的具体方法.本文将通过一个经典的案例:MNIST手写数字识别,以代码的形式来为大家梳理一遍神 ...
- TensorFlow 卷积神经网络手写数字识别数据集介绍
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 手写数字识别 接下来将会以 MNIST 数据集为例,使用卷积层和池 ...
- TensorFlow(四):手写数字识别
一:数据集 采用MNIST数据集:-->官网 数据集被分成两部分:60000行的训练数据集和10000行的测试数据集. 其中每一张图片包含28*28个像素,我们把这个数组展开成一个向量,长度为2 ...
- Tensorflow之MNIST手写数字识别:分类问题(2)
整体代码: #数据读取 import tensorflow as tf import matplotlib.pyplot as plt import numpy as np from tensorfl ...
- TensorFlow(五):手写数字识别加强版
# 该版本的最终识别准确率达到98%以上 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_d ...
随机推荐
- OO第三次博客作业(第三单元总结)
(1)梳理JML语言的理论基础.应用工具链情况 Java 建模语言(JML)将注释添加到 Java 代码中,这样我们就可以确定方法所执行的内容,而不必说明它们如何做到这一点.有了 JML,我们就可以描 ...
- 从零到Django大牛的的进阶之路02
Cookie/Session Cookie Cookie以键值对的格式进行信息的存储. Cookie基于域名安全,不同域名的Cookie是不能互相访问的,如访问itcast.cn时向浏览器中写了Coo ...
- Java 实现 POS 打印机无驱打印
来源:https://www.ibm.com/developerworks/cn/java/j-lo-pos/index.html 行业需求 我们是一家专业做酒店餐饮软件的公司,餐饮软件一个重要的功能 ...
- PLCsim 软件模拟OB86故障
用上一节 组态DP主站与标准从站的方法 组态了网络 实现了 将profibus –dp 标准从站 ET200M 下 输入地址为IW2 接口的状态 读取到 主机 DP-315-2DP 的QW0 变量以来 ...
- other#apache-commons
if you want to be a better javaer, you should spent time on apache commons.
- Java 定时循环运行程序
Timer 和 ScheduledExecutorSeruvce 都能执行定时的循环任务,有函数 scheduleAtFixedRate.但是,如果任务运行时间较长,超过了一个周期时长,下一个任务就会 ...
- leeetcode1171 Remove Zero Sum Consecutive Nodes from Linked List
""" Given the head of a linked list, we repeatedly delete consecutive sequences of no ...
- python矩阵运算大全(linalg模块)
python矩阵的运算大全 python矩阵运算可以用numpy模块,也可以用scipy模块,主要运算包括以下几种: #1-1python矩阵运算所需模块 import numpy as npimpo ...
- 十五、React:简单点餐实例:知识点,html解析写法
一.功能 从首页列表点进去,转到详情页 列表.详情从Api获取 Api列表:http://a.itying.com/api/productlist 详情:http://a.itying.com/api ...
- 吴裕雄--天生自然java开发常用类库学习笔记:同步与死锁
class MyThread implements Runnable{ private int ticket = 5 ; // 假设一共有5张票 public void run(){ for(int ...