Tensorflow是谷歌开发的深度学习框架,目前运用已经被广泛应用各种项目,关于Tensorflow框架的介绍这里就不详细阐述了,本文针对那些对Tensorflow有所了解,可以根据教程编写训练和测试Minist数据集的同志们。
运行环境:win10下利用Anaconda配置的Tensorflow,IDE使用Spyde(因为对Spyde的不了解,在使用过程中确实出现了一些问题,本文后面会具体阐述)。
一、准备工作
首先要定义模型,并训练模型,在这里我定义了一个由两层卷积两层池化和一个全连接层构成的简单卷积神经网络,全连接层中由输入层,单隐含层和输出层构成。
模型构建具体代码:
#构建一个两层卷积网络
#权重和偏置量初始化函数
def weight_variable(shape):
initial = tf.truncated_normal(shape, stddev=0.1)
return tf.Variable(initial)
def bias_variable(shape):
initial = tf.constant(0.1, shape=shape)
return tf.Variable(initial)
#卷积与池化,vanilla版本
def conv2d(x, W): #卷积使用1步长(stride size),0边距(padding size)的模板,保证输出和输入是同一个大小。
return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME')
def max_pool_2x2(x): #池化用简单传统的2x2大小的模板做max pooling。
return tf.nn.max_pool(x, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME')
#第一层卷积和池化
#卷积层的权重与偏置量
W_conv1 = weight_variable([5, 5, 1, 32]) #卷积核的尺寸,输入通道数,输出的通道数(其实就是卷积核的个数)
b_conv1 = bias_variable([32]) #应该为输出的通道数
#图片的尺寸,[-1,宽度,高度,深度(通道数目)]
x_image = tf.reshape(x, [-1,28,28,1])
#卷积的过程+加上偏置量,再采用relu激活函数
h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1) + b_conv1)
#池化的过程
h_pool1