测试程序也是很简单。
首先创建计算图:
with tf.Graph().as_default() as g:
计算图的输入和输出占位与之前反向传播的函数一样:
x = tf.placeholder(tf.float32, [
mnist.test.num_examples,
mnist_lenet5_forward.IMAGE_SIZE,
mnist_lenet5_forward.IMAGE_SIZE,
mnist_lenet5_forward.NUM_CHANNELS])
y_ = tf.placeholder(tf.float32, [None, mnist_lenet5_forward.OUTPUT_NODE])
要注意的是,构建测试图的时候,forward的第二个参数要设为FALSE,表示我们的计算图是用来测试的,所以不用dropout。
y = mnist_lenet5_forward.forward(x, False, None)
后面的恢复过程和准确率计算也是几乎完全一样:
reshaped_x = np.reshape(mnist.test.images, (
mnist.test.num_examples,
mnist_lenet5_forward.IMAGE_SIZE,
mnist_lenet5_forward.IMAGE_SIZE,
mnist_lenet5_forward.NUM_CHANNELS))
accuracy_score = sess.run(accuracy,
feed_dict={x: reshaped_x, y_: mnist.test.labels}) # 计算出测试集上准确率
训练到50000次以上的时候,打印输出的结果表示准确率在百分之九十九左右。
卷积网络的初步构建的讲解到这里就完了。下面是关于更有挑战性的卷积神经网络的构建。