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应用于手写数字识别(第二版)的更多相关文章

  1. Android+TensorFlow+CNN+MNIST 手写数字识别实现

    Android+TensorFlow+CNN+MNIST 手写数字识别实现 SkySeraph 2018 Email:skyseraph00#163.com 更多精彩请直接访问SkySeraph个人站 ...

  2. 基于tensorflow的MNIST手写数字识别(二)--入门篇

    http://www.jianshu.com/p/4195577585e6 基于tensorflow的MNIST手写字识别(一)--白话卷积神经网络模型 基于tensorflow的MNIST手写数字识 ...

  3. 基于TensorFlow的MNIST手写数字识别-初级

    一:MNIST数据集    下载地址 MNIST是一个包含很多手写数字图片的数据集,一共4个二进制压缩文件 分别是test set images,test set labels,training se ...

  4. Tensorflow之MNIST手写数字识别:分类问题(1)

    一.MNIST数据集读取 one hot 独热编码独热编码是一种稀疏向量,其中:一个向量设为1,其他元素均设为0.独热编码常用于表示拥有有限个可能值的字符串或标识符优点:   1.将离散特征的取值扩展 ...

  5. Tensorflow实现MNIST手写数字识别

    之前我们讲了神经网络的起源.单层神经网络.多层神经网络的搭建过程.搭建时要注意到的具体问题.以及解决这些问题的具体方法.本文将通过一个经典的案例:MNIST手写数字识别,以代码的形式来为大家梳理一遍神 ...

  6. TensorFlow 卷积神经网络手写数字识别数据集介绍

    欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 手写数字识别 接下来将会以 MNIST 数据集为例,使用卷积层和池 ...

  7. TensorFlow(四):手写数字识别

    一:数据集 采用MNIST数据集:-->官网 数据集被分成两部分:60000行的训练数据集和10000行的测试数据集. 其中每一张图片包含28*28个像素,我们把这个数组展开成一个向量,长度为2 ...

  8. Tensorflow之MNIST手写数字识别:分类问题(2)

    整体代码: #数据读取 import tensorflow as tf import matplotlib.pyplot as plt import numpy as np from tensorfl ...

  9. TensorFlow(五):手写数字识别加强版

    # 该版本的最终识别准确率达到98%以上 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_d ...

随机推荐

  1. Mysql8.0免安装包配置方法

    1. 官网下载mysql_8.0.12免安装包,解压到你存放的地方: https://www.jb51.net/softs/609101.html 2. 配置环境变量(把bin的文件夹弄进系统path ...

  2. SciPy 线性代数

    章节 SciPy 介绍 SciPy 安装 SciPy 基础功能 SciPy 特殊函数 SciPy k均值聚类 SciPy 常量 SciPy fftpack(傅里叶变换) SciPy 积分 SciPy ...

  3. MySQL查询事务 杀死事务

    遇到 com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock 查询: SELECT * FROM inf ...

  4. GoJS实例1

    复制如下内容保存到空白的.html文件中,用浏览器打开即可查看效果 <!DOCTYPE html> <html> <head> <meta charset=& ...

  5. python 数据处理 对csv文件进行数据处理

    数据如下图: 用python对数据进行处理: #读取csv文件内容并进行数据处理 import os import csv import datetime import re from itertoo ...

  6. Flutter Web环境搭建

    接上篇Flutter Windows下AndroidStudio环境搭建 1.https://github.com/flutter/flutter_web 下载放到本地路径下 2.系统Path增加(根 ...

  7. Python中语法糖及带参语法糖

    在python中,@符号常被称作语法糖(装饰器),在某函数定义时,用以包装该函数,以达到截取,控制该函数的目的. def d(f): print('d...') k=f #此处保留了传进来的原函数 f ...

  8. NO10 查看Linux操作系统-版本-内核-Linux分区

    ·看Linux系统: [root@localhost ~]# uname -m  (看操作系统)x86_64[root@localhost ~]# uname -a   (看操作系统)Linux lo ...

  9. POJ2392:Space Elevator

    Space Elevator Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9244   Accepted: 4388 De ...

  10. js generator的两个实际应用

    generator作为一个用来操作异步的状态机, 遇到yield停止, 通过调用next()来继续操作.  今天就用generator来举例两个实际开发中的应用. 1,抽奖 function draw ...