前两篇手写体数字识别都是初学者入门的教程,第一个利用全连接识别,第二个增减隐含层,准确率较第一个有所提升。都是只利用了图像的一维特征。下面使用卷积利用图像二维的特征进行识别,准确率又有所提升。同时利用Dropout保留部分节点,达到降采样的目的,以防止过拟合。
from tensorflow.examples.tutorials.mnist import input_data
import tensorflow as tf
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)# 参数初始化方法v
def weight_variable(shape):weight = tf.truncated_normal(shape=shape, stddev=0.1)return tf.Variable(weight)# 定义偏置项
def biases_variable(shape):biases = tf.constant(0.1,shape=shape)return tf.Variable(biases)# 定义卷积核
def conv2D(x,w):return tf.nn.conv2d(x,filter=w,strides=[1, 1, 1, 1], padding="SAME")# 定义最大池化
def max_pool_2X2(x):return tf.nn.max_pool(x,ksize=[1,2,2,1], strides=[1,2,2,1], padding="SAME")# 将一维的输入变量转换成
x = tf.placeholder(tf.float32, [None,784])
x_image = tf.reshape(x, [-1, 28,28,