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 ...
随机推荐
- 第2节 网站点击流项目(下):6、访客visit分析
0: jdbc:hive2://node03:10000> select * from ods_click_stream_visit limit 2;+--------------------- ...
- linux服务器常用操作和命令
1. 什么是linux服务器load average? Load是用来度量服务器工作量的大小,即计算机cpu任务执行队列的长度,值越大,表明包括正在运行和待运行的进程数越多.参考资料:http://e ...
- jenkins#安装docker
环境:centos7 安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2 添加Docker软件包源 yum-config ...
- JavaScript 的一些SAO操作
IE判断检测 jQuery 在 1.9 版本之前,提供了一个浏览器对象检测的属性 .browser 的替代方案.于是各种利用 IE bug 的检测方法被搜了出来: // IE 678 最短方法 var ...
- Win7安装Oracle Instantclient ODBC驱动 后配置DSN时出错的解决办法 SQORAS32
安装过程简述 oracle官网下载了 instantclient-odbc-nt--.zip instantclient-basic-nt-.zip 我这是32位版的win7,按照需要下载对应的版本. ...
- POJ 3468 区间更新(求任意区间和)A Simple Problem with Integers
A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 163977 ...
- GNS3 模拟Arp命令1
R1 : conf t int f0/0 no shutdown ip add 192.168.1.1 255.255.255.0 end R2: conf t int f0/0 no shutdow ...
- 如何禁用AD OU 下面的邮箱用户的Exchange ActiveSync 和 适用于设备的OWA
Get-Mailbox -OrganizationalUnit QQ禁用名单 | Set-CASMailbox -ActiveSyncEnabled $false -OWAforDevicesEna ...
- 使用CORDIC算法求解角度正余弦及Verilog实现
本文是用于记录在了解和学习CORDIC算法期间的收获,以供日后自己及他人参考:并且附上了使用Verilog实现CORDIC算法求解角度的正弦和余弦的代码.简单的testbench测试代码.以及在Mod ...
- Spring Boot2(007):关于Spring beans、依赖注入 和 @SpringBootApplication 注解
一.关于Spring beans 和 依赖注入(Dependency Injection) spring boot 和 Spring 全家桶无缝衔接,开发过程中可以很轻松地使用 Spring 全家桶的 ...