在用Lenet-5训练好模型后,用训练好的模型对mnist测试集中的10000条测试数据进行测试,结果电脑变得非常卡顿,并且console中出现如下警告:
虽说计算出了结果,但是运行了很长时间 ,而且期间电脑基本处于不可操作状态。
通过警告信息,可以猜测可能是一次性将10000个测试数据喂入神经网络要求分配的内存过大,所以参考反向传播代码中对训练集的处理方法,可以将一次喂入神经网络的数据量减小,从而减小内存分配,代码修改如下:
# 原来的代码如下
reshaped_x = np.reshape(mnist.test.images, (
mnist.test.num_examples,
lenet5_forward.IMAGE_SIZE,
lenet5_forward.IMAGE_SIZE,
lenet5_forward.NUM_CHENNELS
))
accuracy_score = sess.run(accuracy, feed_dict={x: reshaped_x, y_: mnist.test.labels})
# 修改后的代码如下
# 读取BATCH_SIZE组数据
xs, y_s = mnist.test.next_batch(BATCH_SIZE)
reshaped_xs = np.reshape(xs, (
BATCH_SIZE,
lenet5_forward.IMAGE_SIZE,
lenet5_forward.IMAGE_SIZE,
lenet5_forward.NUM_CHENNELS
))
accuracy_score = sess.run(accuracy, feed_dict={x: reshaped_xs, y_: y_s})
同时记得修改x的占位声明如下:
x = tf.placeholder(tf.float32, [
BATCH_SIZE, # 此处原来为 mnist.test.num_examples
captcha_lenet5_forward.IMAGE_SIZE,
captcha_lenet5_forward.IMAGE_SIZE,
captcha_lenet5_forward.NUM_CHENNELS,
])
将BATCH_SIZE设置为1000或者其他数,程序就能较快运行了。